2012-01-24 5 views
3

클라이언트 측 유효성 검사를 위해 jQuery 유효성 검사 플러그인을 사용하는 양식이 있고 AJAX를 통해 제출합니다. 양식을 제출 한 후 자체 재설정을 원합니다. 나는 .resetForm() 메서드를 사용하여 작동하는 필드를 재설정했지만 문제는 유효성 검사 플러그인이 포커스가있을 때 즉시 필드의 유효성 검사를 시도하고 새 제출에 입력을 입력하기 전에 오류가 발생한다는 것입니다.jQuery 유효성 검사 resetForm()이 onFocus 유효성 검사를 재설정하지 않음

예 흐름 :

처음
  • 트리거 검증
  • 수정 검증, AJAX
  • 전화 .resetForm()를 통해 양식을 제출, 필드는 성공적으로 다시
  • 을 양식을 작성하는
  • 시도를 지워집니다
  • 필드에 집중 (내 경우 전자 메일 유효성 검사)
  • 입력을 입력하기 전에 va 그리고 그것이 잘못되었다고 말했습니다.

일반적으로 플러그인은 틀렸다고 말하기 전에 입력을 입력하게합니다. 폼을 실제로 재설정하고 포커스 유효성 검사를 모두 끄지 않고 유효성 검사를 다시하지 않을 수 있습니까?

감사합니다. 다음은 정리 된/간단한 코드 샘플입니다.

var v = $("form").validate({ 
    submitHandler: function(form) { 
      //resetForm is a method on the validation object, not the form 
      v.resetForm(); 
      form.reset(); 
    } 
}); 

듯 :

// Validation 
    $('#registerForm').validate({ 
     submitHandler: function(form) { 

      $(form).ajaxSubmit({ 
       success: function(response) { 

        if(response == 'success') { 
         resetMyForm(); 
        } 
        else { 
         alert('unsuccessful'); 
        } 

       } 
      }) 
     } 
    }); 

}) 




function resetMyForm() { 

     $('#registerForm').resetForm(); 
     v.prepareForm(); // Tried adding this, no help 
     v.hideErrors(); // Tried adding this, no help 

} 
+0

유효성 검사가 트리거되면? 제출 또는 초점에? –

+0

두 가지 모두에서 유효성을 검사합니다. – Ryan

답변

5

시도 워크 플로우를 따르는 동안 본 모든 문제를 처리하십시오. 참조 : http://jsfiddle.net/nxXNz/27/

+0

setTimeout 고정되어 나를 위해 작동합니다. –

+3

validate 함수를 호출하지 않고이 작업을 수행하려면 (예 : jQuery UI 모달 대화 상자를 닫을 때) 다음을 사용할 수 있습니다 :'$ ('form'). data ('validator'). resetForm();' – JTech

0

당신은 양식을 재설정하고이 같은 검증 플러그인 방식 resetForm을 실행하기 위해 필요한이 대한 focusOut()

function resetMyForm() { 

    $('#registerForm').resetForm(); 
    v.prepareForm(); // Tried adding this, no help 
    v.hideErrors(); // Tried adding this, no help 
    $("ElementName").focusout(); // focus out which ever element you want 

}

+0

문제는 폼이 재설정되고 지워진 후 사용자가 입력에 포커스를 맞추고 자동으로 포커스를 확인하지 않을 때입니다. – Ryan

관련 문제