2011-02-16 4 views
0

현재 각 양식에 5 개의 카테고리, 일련의 질문 및 일련의 라디오 버튼 응답이 있습니다. 범주는 각각 다른 필드 집합에 속하며 각 범주는 양식이 처리 할 수있는 최소 투표 수를 변경해야합니다.jQuery 내에서 양식 제출 취소 .each() 루프

기본적으로 양식을 제출할 때 jQuery가 .each() 루프를 사용하여 각 필드 세트를 살펴보고 카테고리 당 최소 투표 수가 충족되었는지 확인하고 그렇지 않은 경우 양식 제출을 취소합니다. 나는 지금까지 카테고리를 잘 처리하지만 필요한 경우 폼이 제출되는 것을 막지 못합니다.

$('#pollform').submit(function(event){ 

    var formsubmit = event; 

    $('fieldset').each(function(formsubmit){ 
     catname  = $(this).children('input[name=catname]').val(); // Category name 
     reqvotes = $(this).children('input[name=catcount]').val(); // Minimum required number of votes for current category in loop 
     numvotes = $(this).children(':checked').size();    // Number of votes for current category in loop 

     // Check minimum number of votes against actual number cast. Alert user and prevent form from submitting if necessary 
     if (reqvotes > numvotes) 
     { 
      alert('You need to fill out at least ' + reqvotes + ' items for ' + catname + '.'); 

      formsubmit.preventDefault(); 
     } 
    }); 

}); 

아이디어가 있으십니까?

답변

1

false를 반환하려고 했습니까? 물론 각 루프 외부에서 그렇게해야합니다.

$('#pollform').submit(function(event){ 

    var stopsubmit = false; 

    $('fieldset').each(function(formsubmit){ 
     if(stopsubmit) return; 
     catname  = $(this).children('input[name=catname]').val(); // Category name 
     reqvotes = $(this).children('input[name=catcount]').val(); // Minimum required number of votes for current category in loop 
     numvotes = $(this).children(':checked').size();    // Number of votes for current category in loop 

     // Check minimum number of votes against actual number cast. Alert user and prevent form from submitting if necessary 
     if (reqvotes > numvotes) 
     { 
      alert('You need to fill out at least ' + reqvotes + ' items for ' + catname + '.'); 

      stopsubmit=true; 
     } 
    }); 
    if(stopsubmit) return false; 
}); 

이 코드는 테스트하지 않았습니다.

0

두 번째 마지막 }); 바로 뒤에 return false;을 추가하면, each() 함수를 반복하면서 각 시간이 아닌 한 번만 false를 반환하면됩니다.

+0

두 번째 마지막'});'뒤에'return false;를 추가하면 투표의 최소 갯수가 캐스팅되었는지 여부에 관계없이 양식이 전혀 제출되지 않습니다. – John