2011-04-08 3 views
4

나는jquery 유효성 검사 : 관련 필드의 값을 변경하지 않고 원격 유효성 검사를 다시 실행하십시오.

remote: { 
    type: "POST", 
    url: "/some/url", 
    data: { 
    value: function() { 
     return $("#field").val(); 
    }, 
    bypass: function() { 
     if ($("input:radio[name=toggleBypass]:checked").val() == "yes"){ 
     return "yes"; 
     } 
     return "no"; 
    } 
    } 
} 

같은 원격 유효성 검사기 설정을 hava 우회하는 경우 "예", ajax 항상 true를 반환합니다.

흐림 및 제출시 작동하지만 라디오 버튼 값을 재설정 한 다음 제출하면 다시 유효성을 검사하지 않습니다.

예 :

  1. 토글 바이 패스를 "예"로 설정
  2. 필드를 잘못된 값으로 설정
  3. $ ("form"). validate(). 요소 ("# 필드") 실행 . 바이 패스는 "예"이므로 통과합니다.
  4. toggleBypass를 "no"로 설정하십시오.
  5. $ ("form"). validate(). 요소 ("# field")를 실행하십시오. 그것은 원격지가 다시 제출하지 않았기 때문에 통과합니다.

어떻게하면 제대로 작동하게 할 수 있습니까?

답변

2

당신이 jquery.validate.js 라인 897을 보면, 당신은 최적화를 볼 수 있습니다 : 필드의 값이 변경되지 않은 경우

if (previous.old !== value) {

이 라인은 새로운 검증을 방지 할 수 있습니다. validate().element()을 사용하고 있기 때문에 전체 양식이 아닌 해당 필드 만 검사하므로 토글 바이 패스에서 변경 사항을 감지하지 못합니다.

jquery.validate 소스에서이 검사를 제거하거나 해당 필드뿐만 아니라 전체 양식을 검사하십시오.

+0

도움 주셔서 감사합니다. 내일 다시 일하게 될 때 이것을 시도 할 것입니다. – Altealice

관련 문제