2012-05-14 3 views
0

클라이언트 용 응용 프로그램을 작성 중입니다. 특별한 유효성 검사 코딩이 필요하므로 다른 여러 앱과 마찬가지로 플러그인을 사용할 수 없습니다. 텍스트를 드롭 다운 필드의 유효성을 검사 할 때이 코드를 사용했지만 코드를 추가하여 체크 박스의 유효성을 검사 할 때 파손되었습니다. 이 jquery 코드에서 내가 뭘 잘못 했습니까? 내 jsFiddle : http://jsfiddle.net/justmelat/7N7bw/jquery - 이유 : 확인란 : 확인 유효성 검사가 작동하지 않습니다.

전체 jQuery 코드 : >>

$(document).ready(function(){ 
    $("#btnCatchReqFlds").on('click', function(){ 
     $("#holdErrMsg").empty(); 
     var reqButEmpty = $('fieldset:visible').find('input[type="text"][class*="-required"],textarea[class*="-required"],select[class*="-required"]').filter(function() 
      { 
        return $.trim($(this).val()) === ""; 
      }); 
     var chkbx_reqButEmpty = $('fieldset:visible').find('input[type="checkbox"][class*="-required"]').filter(function() 
      { 
        return !$(this).is(':checked') 
      }); 
        var holdAll = reqButEmpty + chkbx_reqButEmpty; 
        if(holdAll.length > 0) 
         { 
          holdAll.each(function() { 
           $('#holdErrMsg').append("Please fill in the " + this.name + "<br />"); 
          }); 
         } 
        return !holdAll.length; 
       }); 
     }); 

위 내가이 확인란 검증이 추가 될 때까지 일하고 >> 여기

var chkbx_reqButEmpty = $('fieldset:visible').find('input[type="checkbox"][class*="-required"]').filter(function() 
      { 
        return !$(this).is(':checked') 
      }); 
        var holdAll = reqButEmpty + chkbx_reqButEmpty; 

하면입니다 jquery 새로운 제안 -하지만 작동하지 않습니다 >>

$(document).ready(function(){ 
    $("#btnCatchReqFlds").on('click', function(){ 
     $("#holdErrMsg").empty(); 
     var reqButEmpty = $('fieldset:visible').find('input[type="text"][class*="-required"],textarea[class*="-required"],select[class*="-required"]').filter(function() 
      { 
        return $.trim($(this).val()) === ""; 
      }); 
     //var chkbx_reqButEmpty = $('fieldset:visible').find('input[type="checkbox"][class*="-required"]').filter(function() 
     var chkbx_reqButEmpty = $('fieldset:visible').find('input:checked[class*="-required"]').filter(function() 
      { 
        console.log(this); 
        //return !$(this).is(':checked') 
        //return !this.checked; 
        return $(this).is(!':checked'); 
      }); 
        //var holdAll = reqButEmpty + chkbx_reqButEmpty; 
        //var holdAll = reqButEmpty.concat(chkbx_reqButEmpty).length; 
        var holdAll = $.extend(reqButEmpty,chkbx_reqButEmpty); 
        if(holdAll.length > 0) 
         { 
          holdAll.each(function() { 
           $('#holdErrMsg').append("Please fill in the " + this.name + "<br />"); 
          }); 
         } 
        return !holdAll.length; 
       }); 
     }); 

답변

0

찾기 기능에서 (input:checked)을 사용해 보셨습니까?

$('fieldset:visible').find('input:checked[class*="-required"]').filter(function(){}); 

편집 :

하지이 선해야합니다 return !$(this).is(':checked')return $(this).is(':checked')

편집 :

if(!$(this)is(':checked') 
    return true/false; 
+0

지금 나는이 오류가 [catch되지 않은 형식 오류 : 개체 [개체 개체] object object]에는 'each'] 메서드가 없지만 is()는 상자가 선택되어 있는지 확인해야하기 때문에 .each를 사용하지 않습니다. – user1176783

+0

@ user1176783 내 대답을 읽고 오류를 제거하십시오. – VisioN

+0

필자는 필수 필드를 채우고 싶지만, 채워지지는 않습니다. 그래서이 경우에는 체크가되어서는 안됩니다. – user1176783

0

는 시도

return $(this).is(!':checked') 
0
var holdAll = reqButEmpty + chkbx_reqButEmpty; 

JQuery와 당신이 유형 [Object][Object]을 얻을 개체를 두를 연결하여 :라인에 문제가 있습니다.

사용하는 대신 코드 :

var holdAll = $.extend(reqButEmpty,chkbx_reqButEmpty); 

DEMO :http://jsfiddle.net/7N7bw/2/

0

당신은 시도 할 수 있습니다 :

var chkbx_reqButEmpty = $('fieldset:visible').find('input[type="checkbox"][class*="-required"]').filter(function() { 
     return !this.checked; 
}); 
var holdAll = reqButEmpty.concat(chkbx_reqButEmpty).length; 
관련 문제