보통 checkbox 쓸때와 살짝 다름


퍼블리셔가 icheck 라이브러리를 써서 이에 걸맞게 이벤트 처리를 하느라 아주 살짝 곤욕을 치뤄서 끄적끄적하게됨


하려고 한건 아래 그림에 있는거처럼


사용기간에 있는 "노출 기간과 동일" 체크 박스를 누르면 노출기간이 그대로 사용기간으로 셋팅되게 하는거였어



이때, 노출기간에 아무런 값이 없으면 노출기간 입력하라는 메세지를 띄우고 체크박스는 해제 하는게 되는거였지


근데 암만 해도 안되는겨..


 $("#equalViewDateChk").on("ifChecked", function(evt){

    var checked = evt.target.checked;

    var viewStartDate = $("input[name=viewStartDate]");

    if( $(viewStartDate).val() == "" ){

        var icheck = $(this);


        alert("노출 기간 시작일을 입력해주세요.");

        $(icheck).iCheck('uncheck'); <-- 이 부분이 안됨. 문법 오류 없고!

        $(viewStartDate).focus();


    } else {

        $("input[name=useStartDate]").val($(viewStartDate).val());

        $("input[name=useEndDate]").val($("input[name=viewEndDate]").val());

    }

})


그래서 이것 저것 확인해 보니까 ifChecked 는 체크할때 아주 미세하게 interval이 있더라고.


ifChecked 는 체크할때의 액션인데 이때 iCheck 속성이 바로 check 로 바뀌는게 아니더라고..


그래서 해결한 방법이 정말 미세하게 interval을 주는 거였어.



소스에서 보면 setTimeout 을 써서 0.1초 후에 내가 원하는 이벤트를 발생시키는거지.


$("#equalViewDateChk").on("ifChecked", function(evt){

    var checked = evt.target.checked;

    var viewStartDate = $("input[name=viewStartDate]");

    if( $(viewStartDate).val() == "" ){

        var icheck = $(this);

        setTimeout(function() {

            alert("노출 기간 시작일을 입력해주세요.");

            $(icheck).iCheck('uncheck');

            $(viewStartDate).focus();

        }, 100);

    } else {

        $("input[name=useStartDate]").val($(viewStartDate).val());

        $("input[name=useEndDate]").val($("input[name=viewEndDate]").val());

    }

})

 



이렇게 하니 내가 원하는 이벤트가 완성되었음!


'Develope > Jquery' 카테고리의 다른 글

IE 에서 Map.values 대체하여 사용하기  (0) 2019.06.19
JS 글자 수 byte로 체크  (0) 2019.05.27

+ Recent posts