반응형
function fnSetEmailHidden(value){

    if (value.indexOf("@") != -1) {
        var vValue = value.split("@");

        if (vValue[0].length < 4) {
            var vResult = vValue[0];
            vResult = vResult.substring(0, vResult.length - 1);
            vResult += "'@";
            vResult += vValue[1];

            return vResult;
        }
        else {
            var vResult = vValue[0];
            vResult = vResult.substring(0, vResult.length - 3);
            vResult += "'''@";
            vResult += vValue[1];

            return vResult;
        }
    }
    else
    {
        alert("이메일을 찾을 수 없습니다.\n@누락");
        console.log("@가 없습니다.");
    }    
}

 

해당 건은 이메일을 value로 받았을 때

@를 나누고

아이디 값의 마지막 3글자를 가리기 위한 함수입니다.

 

응용하면 원하는 숫자만큼을 가릴 수 있습니다.

반응형

object명.constructor.name

 

ex)

Json형태일때

 

obj.TEST[0].constructor.name 하면 0번째 있는 것의 type을 가져올 수 있다. (array가 object이면 object / file => file로 가지고 온다)

 

 

p.s 익스플로러에서는 사용 할 수 없습니다.

 

반응형
var d = new Date();

    return d.getFullYear() + _pad((1 + d.getMonth()), "2") + _pad(d.getDate(), "2") + d.getHours() + d.getMinutes() + d.getSeconds() + d.getMilliseconds();



function _pad(n, width) {
    n = n + '';
    return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
}
반응형

Jquery 1.7 이후 버전 

$(document).on("click","#btn",function()

 

중간에 ,로 2~3개 선택자를 더 넣을 수 있다.

$(document).on("click", "ID , 다른ID", function () {
	alert("Upload_Complete_FileNM");
});
반응형

/* 3개 이상 될 때 체크 후 데이터 받아와서 자동완성 리스트 만들기 (출발지) */
$("#Input_Start").keyup(function () {

    $("#searchclear_Start").toggle(Boolean($(this).val()));

    var vValue = $("#Input_Start").val();

    if (vValue.length > 2) {
        //Ajax 통신
        if (vValue != _vAutoValue) {
            _vHeight_Start = 0;
            _vSelectATag_Strat = 0;
            //_vAutoValue = "";

            fnGetJson_Port('Search_StartData', vValue);
        }
    } else {
        $("#Search_StartData").empty();
    }

    /* 값이 있을 경우 show 없을 경우 hide */
    if (0 < vValue.length) {
        $("#Search_StartData").show();
    } else {
        $("#Search_StartData").hide();
    }


    _vAutoValue = vValue;

});

//////////////////////////////////////자동완성 리스트 클릭 시 이벤트

//자동 완성 리스트 클릭 시 해당 데이터 input 박스에 넣기 (출발지)
$(document).on('click', "#Search_StartData a", function (event) {
    //현재 선택된 A태그 가져오기
    //var vGetValue = event.target.attributes.value.nodeValue; //value값 가져오기
    var vGetValue = event.target.text;   //Text

    $("#Input_Start").val(vGetValue)
    fnShowHideList("Input_Start", "Search_StartData", "none");
    $("#Search_StartData").hide();

});

//영역 포커스 잃었을 때/////////////////////////////////////////////////////////

var IsCheckMouse;

$("#Search_StartData").on('mouseenter', function () {
    IsCheckMouse = true;
});
$("#Search_StartData").on('mouseleave', function () {
    IsCheckMouse = false;
});


//focus 잃었을 경우.
$("#Input_Start").focusout(function (e) {

    //input 박스 데이터 없을 시 삭제 + 초기화
    if (IsCheckMouse == false) {
        $("#Input_Start").val("");
        $("#Search_StartData").empty();
    }
});


///////////////////////////방향키 위 아래 이벤트 

 //자동완성 키 ↑↓ 이벤트
$("#Input_Start").keydown(function (e) {
    //방향키 ↑
    if (e.keyCode == '38') {
        if (_vSelectATag_Strat == 0) {
            //리스트의 첫번째를 선택 했을 경우            
            _vSelectATag_Strat = 0;
            $("#Search_StartData a:eq(" + _vSelectATag_Strat + ")").addClass("A_Select");
        } else {
            $("#Search_StartData a:eq(" + _vSelectATag_Strat + ")").removeClass();
            _vSelectATag_Strat--;
            $("#Search_StartData a:eq(" + _vSelectATag_Strat + ")").addClass("A_Select");

            /* 리스트 selected 설정 */
            var winH = $("#Search_StartData a:eq(" + _vSelectATag_Strat + ")").outerHeight();
            _vHeight_Start -= winH;

            //Focus 이동
            if (235 > _vHeight_Start) {
                $('#Search_StartData').animate({ scrollTop: _vHeight_Start }, 0);
            }
        }
        //기본 이벤트 막기 (방향키 ↑ 눌렀을 때 커서 이동 막기)
        e.preventDefault();
    }
    //방향키 ↓
    else if (e.keyCode == '40') {

        if (_vSelectATag_Strat == $("#Search_StartData a").length - 1) {
            //리스트의 마지막을 선택 하는 경우
            _vSelectATag_Strat == $("#Search_StartData a").length - 1;
            $("#Search_StartData a:eq(" + _vSelectATag_Strat + ")").addClass("A_Select");
        } else {
            $("#Search_StartData a:eq(" + _vSelectATag_Strat + ")").removeClass();
            _vSelectATag_Strat++;
            $("#Search_StartData a:eq(" + _vSelectATag_Strat + ")").addClass("A_Select");

            /* 리스트 selected 설정 */
            var winH = $("#Search_StartData a:eq(" + _vSelectATag_Strat + ")").outerHeight();
            _vHeight_Start += winH;
            var vDivH = $("#Search_StartData").outerHeight();
            console.log(vDivH);

            $('#Search_StartData').animate({ scrollTop: _vHeight_Start - vDivH }, 0);
        }
    }
    //Enter Key
    else if (e.keyCode == '13') {
        var vSelectValue = $(".A_Select").text();

        $("#Input_Start").val(vSelectValue);

        $("#Search_StartData").empty();
    }
    //키보드 값 확인.
    console.log(_vSelectATag_Strat);
});

////////////////////Search 리스트 체크 로직
/* Search 리스트 체크하는 로직 */

function fnfilterFunction(input,div) {
var input, filter, ul, li, a, i;
input = document.getElementById(input);
filter = input.value.toUpperCase();
div = document.getElementById(div);
a = div.getElementsByTagName("a");
for (i = 0; i < a.length; i++) {
txtValue = a[i].textContent || a[i].innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
a[i].style.display = "block";
} else {
a[i].style.display = "none";
}
}
if(filter == ""){
for(i = 0; i < a.length; i++){
a[i].style.display ="none";
}
}
}

/* 자동완성 hide 시켜주는 함수 */
function fnShowHideList (input,div,ShowType){
var vInput , vFilter , vAtag , vShowType;
vInput = $("#"+input).val();
vFilter = vInput.toUpperCase();

vAtag = $("#"+div+" a");    

for(var i=0; i<vAtag.length; i++){
    vAtag[i].style.display = ShowType;
}

}

//▼버튼 클릭 시 리스트 show / hide
/*function fnControlList(id){
vInput = $("#"+id).css("display");
vCheck = ""

if(vInput == "block"){
$("#"+id).hide();
vCheck = "none";
}else{
$("#"+id).show();
vCheck = "block";
}

if(id == "Search_StartData"){
fnShowHideList("Input_Start","Search_StartData",vCheck);
}else if(id == "Search_EndData"){
fnShowHideList("Input_End","Search_EndData",vCheck);
}
}*/

반응형

[2021.05.07]
※2019년에 FullCalendar를 커스터마이징을 하였고 버전은 'v3' 버전을 이용하였습니다. 
현재 v5버전까지 나온것으로 확인되며, v3 버전은 아래 도메인에서 받을 수 있습니다. 

github.com/fullcalendar/fullcalendar/releases/tag/v3.10.2

 

Release v3.10.2 · fullcalendar/fullcalendar

Legacy v3-only fix. Compatibility with jQuery 3.5.0 (#5391, #5348)

github.com

 

처음에 생성된 fullcalendar는 삭제하고, 재 생성 해주는 것으로 다시 그려줄 수 있습니다.

//기존 FullCalendar 삭제
$('#calendar').fullCalendar('destroy'); //달력 삭제

//FullCalendar 달력 재 생성
$('#calendar').fullCalendar({  // 달력 재 생성
    height: 700,
    header: {
      //center: 'prev,title,next', 여기에 select 값을 보내서 달력 이동 할 수 있게.
      left: null,
      center: 'title',
      right: null
    },
    defaultDate: "YYYYMMDD", //20200101 숫자가 들어가야됩니다. 
    editable: true,
    eventLimit: true,
    monthNames: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
    monthNamesShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
    dayNames: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
    dayNamesShort: ["일", "월", "화", "수", "목", "금", "토"],
    buttonText: {
      today: "오늘",
      month: "월별",
      week: "주별",
      day: "일별"
	}
});

 

반응형

[2021.05.07][2021.05.07]
※2019년에 FullCalendar를 커스터마이징을 하였고 버전은 'v3' 버전을 이용하였습니다. 
현재 v5버전까지 나온것으로 확인되며, v3 버전은 아래 도메인에서 받을 수 있습니다. 

github.com/fullcalendar/fullcalendar/releases/tag/v3.10.2

 

Release v3.10.2 · fullcalendar/fullcalendar

Legacy v3-only fix. Compatibility with jQuery 3.5.0 (#5391, #5348)

github.com

먼저 FullCanlendar는 처음에 생성 될 때 옵션 값들을 넣어서 설정하는 것으로 달력을 html 해서 그려줍니다.

저는 Cell 클릭시 새로운 영역을 보여주기를 원했고, 설정에서는 어떻게 사용해야 되는지를 알 수 없어서 API를 뜯었습니다.

 

DayTableMixin.prototype.renderBgCellHtml로 api를 검색하여 Cell이 그려질 때 마다 Onclick 이벤트의 함수를 넣어서 사용 할 수 있게 하였습니다.

DayTableMixin.prototype.renderBgCellHtml = function (date, otherAttrs) {
        var t = this;
        var view = t.view;
        var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); 
        var classes = t.getDayClasses(date);
        classes.unshift('fc-day', view.calendar.theme.getClass('widgetContent'));
        
        //※ td에 Onclick 이벤트를 주었습니다.
        return '<td class="' + classes.join(' ') + '" onclic="Test()"  ' + 
            (isDateValid ?
                ' data-date="' + date.format('YYYY-MM-DD') + '"' : 
                '') +
            (otherAttrs ?
                ' ' + otherAttrs :
                '') +
            '>' +         
			'</td>';
    };

td의 onclick 이벤트를 주어서 클릭 할 때마다 원하는 함수를 사용 할 수 있게 만들었습니다.

 

name이나 class로 데이터를 넣는다면 아래와 같이 이벤트를 할 수 있을 것 같습니다. (이것은 해보지는 않았습니다.)

※새롭게 생성되는 html일 경우 아래와 같이 사용 하여야 이벤트를 잡을 수 있습니다.

$(document).on("click","생성된 클래스 or 네임",function () {
	//소스 코딩
});

 

 

질문이 있으시면 댓글로 남겨주세요~

반응형

[2021.05.07]
※2019년에 FullCalendar를 커스터마이징을 하였고 버전은 'v3' 버전을 이용하였습니다. 
현재 v5버전까지 나온것으로 확인되며, v3 버전은 아래 도메인에서 받을 수 있습니다. 

github.com/fullcalendar/fullcalendar/releases/tag/v3.10.2

 

Release v3.10.2 · fullcalendar/fullcalendar

Legacy v3-only fix. Compatibility with jQuery 3.5.0 (#5391, #5348)

github.com

 

현재 날짜 이전의 년도 및 월을 검색 하고 싶지 않을때는 아래와 같이 써주면 됩니다.

//YYYYMM
if($('#calendar').fullCalendar('getDate').format('YYYYMM') == YYYY + MM){
	$(".fc-prev-button").prop('disabled', true); 
}

주의할 점

※calendar를 생성 시켜준 다음에 적용 하셔야 됩니다.

+ Recent posts