본문 바로가기
개발노트

.each문으로 td값 비교

by SoonNote 2022. 5. 12.
반응형

모든 tr에 td값을 비교해서 날짜 시간 중복되는것 걸러내기

 

 

if( $(item).find("[data-date]").val() || $(item).find("[data-time]").val() || $(item).find("[data-place]").val() ) {
    var date = $(item).find("[data-date]").val();
    var time = $(item).find("[data-time]").val();

    //time에 '~'포함 여부 체크
    if(time.indexOf('~') == -1){
        alert("시간대 설정을 다시해주세요.\n예) 10:00 ~ 12:00");
        isProgress = false;
        return false;
    }

    var trLength = $(item).closest('tr').prevAll().length;
    time = time.split("~");
    var stTime = time[0].trim();
    var edTime = time[1].trim();

    var trs_one = $('#listRepeatArea tr');

    trs_one.each(function() {
        if($(this).closest('tr').prevAll().length != trLength){
            if($(this).find("[data-date]").val() == date){
                var chkTime = $(this).find("[data-time]").val();
                chkTime = chkTime.split("~");
                chkStTime = chkTime[0].trim();
                chkEdTime = chkTime[1].trim();

                if(stTime < chkEdTime && edTime > chkStTime){
                    alert("동일한 날짜, 시간으로 등록하실 수 없습니다.");
                    $(this).find("[data-time]").focus();
                    isProgress = false;
                    return false;	
                }
            };
        }
    });

    if( !isProgress ) {
        return false;
    }
}

 

tip

each문에서는 return false가 원하는 방식으로 적용되지가 않기때문에 each문 밑에 조건문 추가해야 한다.

반응형