2014-02-10 2 views
0

일단 처음 설정되면 고정 기능 아래 '동기화'변수에 문제가 있습니다.jQuery 유효성 검사 자바 스크립트 범위 지정 문제

내가 함께 ...

save(true); 
save(false); 

아래 호출하는 경우.

var save = function (sync) { 

     // value of sync here always reflects what is passed in 

     $('form').validate({ 
      rules: { 
       ... 
      }, 
      submitHandler: function() { 
       var ajax = sync; // the first time sync is true, and then it is always true! 
      } 
     }); 
     $('form').submit(); 
    } 

첫 번째 통화 동기화는 '참'입니다. 두 번째 호출에서 유효성 검사 전에 sync가 'false'이지만 submitHandler에서 sync가 'true'로 돌아갑니다.

저는 이것이 범위 지정 문제라고 생각합니다. 제출 핸들러에서 전달 된 '동기화'값에 어떻게 액세스 할 수 있습니까?

+2

'save'를 호출 할 때마다 이전의 것을 제거하지 않고 새로운 validator 객체를 생성합니다. 'save'가 호출되는 방식에 대해 더 많은 코드를 추가 할 수 있습니까? 이상적으로'save()'를 호출 한 횟수에 관계없이'$(). validate()'__once__ 만 호출하면된다. – Mathletics

+0

save()는 버튼 클릭 핸들러에서 바로 호출됩니다. 버튼을 클릭하면 저장이 호출됩니다 (한 번만 호출 됨). submitHandler에서 'this'는 jquery가 자체적으로 유효성을 검사한다고 생각합니다. 어떻게 든 동기화가 설정되면 다시 설정할 수 없습니다. 아주 이상한. –

+1

... 당신이 잘못하고있는 것처럼 들리네. 폼이 생성 될 때 폼에서'validate'를 호출하고 submit 이벤트를 처리하도록해야합니다. 'save (false) '의 목적은 무엇입니까? – Mathletics

답변

0

jQuery 유효성 검사를 올바르게 사용하여이 문제를 해결했습니다. @Mathletics에서 제안한 것처럼 초기화 할 때 validate를 호출하고 Validate()를 사용하여 폼의 유효성을 검사합니다.