2012-06-16 3 views
1

서버에서 유효성을 검사해야하는 ZipCode 필드가있는 페이지가 있습니다. 페이지가로드 될 때 ZipCode가 이미 일부 외부 소스에서 미리 채워져 있어야합니다. 내가 추가 한 페이지로드 후 한 번에 작업을 수행하기 위해 $ (문서) .ready (함수() {JQuery 원격 유효성 검사기는 항상 false를 반환합니다.

$("#Buyer_ZipCode").rules("add", { 
     remote: { url: zipcodeValidationUrl, async: false }, 
     messages: 
      { 
       remote: "Cannot determine location for given zip code." 
      } 
    }); 

    var zipcode = $("#Buyer_ZipCode"); 
    if (zipcode.val().length > 0) { 
     zipcode.trigger('blur'); 
    }; 

}); 

:

나는이 분야의 유효성을 검사하기 위해 JQuery와 원격 유효성 검사기를 추가 흐림 트리거 내 흐림 핸들러 :.. 페이지가로드되고 우리가 이미 우편 번호 필드의 값을 가질 때

$("#Buyer_ZipCode").bind('blur', function (e) {  

    //some actions 

    element = $(e.target);   
    if (!element.valid()) { 
     console.log(element.val()); 
     // Invalidate lookup target control. 
     targetCity.get(0).value = ""; 
     targetState.get(0).value = ""; 
     return; 
    }; 

// yet some actions 

}); 

모든 상황을 제외하고 정상적으로 작동 유효한() 메소드는 항상 false, 그럼에도 불구하고 원격 반환이 경우 유효성 검사가 비동기 및 T가 아닙니다. 서버 은 실제로을 반환합니다. 그건 그렇고, 이것은 내 유효 컨트롤러입니다

public JsonResult IsZipCodeValid([NestedFieldModelBinder]string Buyer_ZipCode) 
    { 
     if (Utils.GetZipcode(Buyer_ZipCode) != null) 
     { 
      return Json(true, JsonRequestBehavior.AllowGet); 
     } 

     return Json("Cannot determine location for given zip code.", JsonRequestBehavior.AllowGet); 
    } 

내가 뭘 잘못하고 있니?

+0

작은 추가. 우편 번호 입력시 서버 유효성 검사를 통과하지 못했지만 오류 메시지가 표시되면 jquery.valid (0 메서드는 false를 반환하지만 메시지가없는 경우) –

답변

1

RemoteAttribute을 사용하는 것이 훨씬 간단하고 간편합니다.

당신의 ViewModel에서 검증에 대한 귀하의 Buyer_ZipCode 속성

[Remote("ValidateZipCode", HttpMethod="Post", ErrorMessage = "Cannot determine location for given zip code.")] 
public string Buyer_ZipCode{ get; set; } 

그리고 당신의 행동에 원격 [] 속성을 추가 :

[HttpPost] 
public ActionResult ValidateZipCode(string Buyer_ZipCode) 
{ 
    // do your validation 
    return Json(true); 
} 

감사

+0

답변을 주셔서 감사합니다. 대신 jquery 유효성 검사를 선택하는 이유 원격 속성은 jquery 리모컨을 동기식 요청으로 만들 수 있다는 것입니다. –

관련 문제