var arr = []; // map에 담긴 value를 리스트에 담기위한 객체
    
    /*
        map 에 담긴 value 가져오기
        모든 브라우저에서 가능
    */
    tagCodeMap.forEach(function (value, key, map) {
        console.log("map.get(" + key + ")" + " = " + value);
        arr.push(value);
    });
    var arr = []; // map에 담긴 value를 리스트에 담기위한 객체
    
    /*
        IE에선 안되는 코드. values() 가 안먹힘
    */
    var it = tagCodeMap.values();
    do{
        var itObj = it.next();
        if( itObj.done == true ){
            console.log("STOP!!!!!!!!!!!");
            break;
        } else {
            arr.push(itObj.value);
        }

    } while( true ); 

Map 참고

Map.values 레퍼런스 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values#Browser_compatibility
Map 레퍼런스 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/prototype

 

Map.prototype

The Map.prototype property represents the prototype for the Map constructor.

developer.mozilla.org

 

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

JS 글자 수 byte로 체크  (0) 2019.05.27
iCheck 이벤트 처리  (0) 2019.02.22
var wordMaxLenMap = new Map();
wordMaxLenMap.set("title", 22);
wordMaxLenMap.set("content", 32);


// 각종 "명" 글자수 체크
function fnCheckWord(obj){
    var len = 0;
    var maxByte = 0;

    if (wordMaxLenMap.has($(obj).attr("name"))) {
        maxByte = wordMaxLenMap.get($(obj).attr("name"));
    }
    var str = $(obj).val();
    var totalByte = 0;
    var oneChar = "";
    for (var i = 0; i < str.length; i++) {
        oneChar = str.charAt(i);
        if (escape(oneChar).length > 4) {
            totalByte += 2;
        } else {
            totalByte++;
        }

        // 입력한 문자 길이보다 넘치면 잘라내기 위해 저장
        if (totalByte <= maxByte) {
            len = i + 1;
        }
    }

    if( $(obj).attr("name") == "giftName" ){
        $(obj).parent().parent().find("p.bytes").text( totalByte + "/" + maxByte);
    } else {
        $(obj).parent().find("p.bytes").text( totalByte + "/" + maxByte);
    }

    if (totalByte > maxByte) {
        // alert(maxByte + "자를 초과 입력 할 수 없습니다.");
        $(obj).val(str.substr(0, len));
        // fnCheckWord($(obj), maxByte);
    }
}

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

IE 에서 Map.values 대체하여 사용하기  (0) 2019.06.19
iCheck 이벤트 처리  (0) 2019.02.22


보통 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