2011-09-12 6 views
0

작동하지 않습니다 - 아래 참조 : 나는 JQuery와 플러그인을 확인하고 어떤 이유로 내가 유효한 필드를 반환받을 수 없습니다 사용하고JQuery와 유효성 검사 규칙은 고정

- 항상 무효 반환합니다. 나는 같은 기능을 수정하는 경우 - 여기

http://plugins.jquery.com/project/jqueryvalidate

발견 또는 특정 주소를 찾을 수 있지만, 유효성 검사가 계속 실패로 내가

 $(function(){ 
      $("#address").validate({ 
       valid: function(val){ 
        $.getJSON("http://maps.google.com/maps/geo?q="+ escape(val) +"&key=ABQIAAAAnfs7bKE82qgb3Zc2YyS-oBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSySz_REpPq-4WZA27OwgbtyR3VcA&sensor=false&output=json&callback=?", 
        function(data, textStatus) 
        { 
         if(data.Status.code=='200') 
         { 
          return true; 
         }else{ 
          return false; 
         } 
        }); 

       }, 
       errorMessage: function(val){ 
        return "must geo code"; 
       }, 
       appendCompletionIcon: true 
      }); 
     }); 

내가 돌아 오는 GEO 코드 요청을 볼 수있을거야 다음은 유효하거나 유효하지 않은 주소와 관련하여 경고 예 또는 경고 아니오를 표시하지만 유효성 검사는 여전히 실패합니다. 이 두 지역 코드 호출이 완료 걸립니다

    function(data, textStatus) 
        { 
         if(data.Status.code=='200') 
         { 
          alert('yes'); 
          return true; 
         }else{ 
          alert('no'); 
          return false; 
         } 
        }); 

어떤 도움 내가이 문제를 해킹하는 방법을 발견


을 감상 할 수있다, 그것은 매우 꽤 아니다. 그래도 내 목적을 위해 충분히 좋습니다.

var geocode = false; 
function geoadd() 
{ 
    $.getJSON("http://maps.google.com/maps/geo?q="+ $("#address").val() +"&key=ABQIAAAAnfs7bKE82qgb3Zc2YyS-oBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSySz_REpPq-4WZA27OwgbtyR3VcA&sensor=false&output=json&callback=?", 
    function(data, textStatus) 
    { 
     if(data.Status.code=='200') 
     { 
      geocode = true; 
     }else{ 
      geocode = false; 
     } 
    }); 
} 

     $(function(){ 
      $("#address").validate({ 
       valid: function(val){ 
        geoadd(); 
        return geocode; 
       }, 
       errorMessage: function(val){ 
        return "must not be blank"; 
       }, 
       appendCompletionIcon: true 
      }); 
     }); 

답변

1

당신의 valid 핸들러에서 반환 된 값이 널 (null) 사실이 아니다 또는 false 때문에 귀하의 검증에 관계없이 아약스 통화 상태의 실패합니다.

true 또는 false 값은 valid 함수에서 true/false 값을 반환하는 것과 같지 않은 ajax의 전체 처리기에서 반환됩니다.

이 문제를 해결하려면 동기식 아약스 호출 (응답을 기다리는 동안 사용자 인터페이스를 잠그기 때문에 권장하지 않음)을 사용하거나 유효성 검사 플러그인을 변경하여 유효성 검사를 지원해야합니다. 아약스 전화.

+0

감사합니다. 50 개 이상의 입력란을 가지고 있기 때문에 해킹 할 수 있다고 생각합니까? 어쩌면 지오 코드 결과에 따라 값 1 또는 0을 사용하여 숨겨진 양식 필드를 설정하고 유효성을 검사하는 함수를 사용할 수 있습니까? 아니면 여전히 내 시간을 낭비 할 것인가? 감사합니다 –

+0

그래, 그게 효과가있다. 지오 코드 검사를 위해 아약스 호출을 트리거 한 다음 아약스 응답 처리기에서 필요한 모든 작업을 수행합니다 (응답에 따라 #address 필드를 유효 또는 유효하지 않음으로 표시). – WTK

관련 문제