2012-04-07 5 views
0

"false false;" 양식 제출을위한 나머지 코드는이 섹션이 아니라 단지 작동합니다. 어떤 아이디어?"return false;" 양식 제출이 작동하지 않습니다.

function checkForm() { 
    $("select[name*=lic_company]").each(function() { 
     if($(this).val() != '') { 
      var i1 = $(this).parent("td").next("td").children("select"); 
      var i2 = i1.parent("td").next("td").children("input"); 
      var i3 = i2.parent("td").next("td").children("input"); 
      if(i1.val() == '') { 
       i1.parent("td").addClass("formErrorTD"); 
       i1.addClass("formError"); 
       alert("You must enter a state for this license"); 
       return false; 
      } 
      if(i2.val() == '') { 
       i2.parent("td").addClass("formErrorTD"); 
       i2.addClass("formError"); 
       alert("You must enter an expiration date for this license"); 
       return false; 
      } 
      if(i3.val() == '') { 
       i3.parent("td").addClass("formErrorTD"); 
       i3.addClass("formError"); 
       alert("You must enter a license number for this license"); 
       return false; 
      } 
     } 
    }); 
} 

과는

$("#addAgentForm").submit(checkForm); 
+0

'작동하지 않음'이라는 것이 무슨 뜻인지 분명히 할 수 있습니까? –

+0

'checkForm()'안에있는'$ .each() '의 범위가'checkForm()'이 아닌 false를 반환하기 때문에. 'checkForm()'범위의 지역 변수를 설정하고, true로 설정 한 다음, 그 지역 변수를 false로 설정 한 후'checkForm()'에서 반환해야합니다. –

답변

3

.each에 전달되는 인수 인 클로저 내에서 return false;을 호출하고 있습니다. 따라서 .eachreturn false;을 캡처 중입니다. 이 문제를 해결하려면 양식의 상태를 유지하는 부울 플래그가 있어야합니다.

function checkForm() { 
    var okay = true; 

    $("select[name*=lic_company]").each(function() { 
    ... 
     return okay = false; 
    ... 
    }); 

    return okay; 
} 

모든 것이 정상적으로 작동합니다.

+0

그것은 의미 있고 완벽하게 작동합니다. 감사합니다! – xjx424

+0

마이크 테일러 : 천만에요! 답변 옆에있는 체크 표시의 개요를 클릭하여 올바른 것으로 표시해야합니다. 당신이 그것을 좋아한다면 그것을 upvote 할 수도 있습니다 :) –

1

귀하의 return false 문에 의해 호출되는 것 때문에 단지 checkForm()에, 그 함수에서 전체 호출 값을하지 반환 .each()에 전달 된 익명 함수 내부에 있습니다.

0

짐작할 수 있다면 각 호출에 전달 된 함수에서 돌아 오는 것이므로 주된 유효성 검사 함수가 문제없이 종료되는 동안 실제로 수행중인 모든 작업이 종료된다는 의미입니다.

관련 문제