2010-12-07 6 views
1

사용자 이름이 가능할 경우에만 사용자 이름 가용성 및 양식 제출을 확인하려고합니다. jQuery를 검증 플러그인을 사용jQuery 유효성 검사 - submitHandler 및 AJAX 응답

, 내가 설정 한 :

 submitHandler: function(form) { 
     if (ajaxCheck() == true){ 
      alert('true'); 
     } 
    } 

과 기능을 확인 내 이름은 다음과 같습니다

function ajaxCheck(){ 
usernameVal = $("#username").val().toLowerCase(); 
usernameVal = usernameVal.replace(/[\s\W]/g, ''); 
$.post("/app/signup/username/", { 
username: usernameVal 
}, function(response){ 
    if (response == "Username not available.") { 
     $("#signup").validate().showErrors({ "username" : "Username Not Available." }); 
     alert('false'); 
     return false; 
    } else { 
     alert('true'); 
     return true; 
    } 
}); 

}

문제는 그것이 참인지 거짓 반환하지 않는 것입니다 submitHandler에 전송합니다. return 문이 $ .post 내에 있기 때문에 나는 확실하지 않습니다.

ajaxCheck를 독립적으로 실행하면 사용 가능성에 따라 false이고 true로 표시되며 submitHandler에서 호출하면 false/true가 반환되지 않습니다.

감사 인사.

+0

내가 방법을 얻을 생각 complets가 asyncronous 호출이기 때문에이 값을 반환하기 전에, 내가이 약 90 % 확신 ... – kobe

답변

1

Novon,

당신은 아약스의 성공 내부 변수를 설정할 수 있습니다,하지만 내 지식을 당신은 아약스에서 값을 반환 할 수 없습니다.

비동기 호출이므로 전역 변수를 유지하여 확인의 논리를 성공으로 옮기십시오. ajaxCheck에/거짓

$.validator.addMethod("usercheck", function(value, element) { 
     ajaxCheck(); 
     return validName; 
}, "Username not available!"); 

및 변수 "validName"를 설정 대신에 진정한 반환 :

당신과 함께 이제 작업, 아약스 통화를하고 방법처럼

+0

덕분에 나는 그것을 시도 할 것이다. – novon

0

최고 반환 값을 얻을 수 없다();

+0

어떻게 작동합니까? validName은 어디에도 정의되어 있지 않습니다. – neelmeg

2

원격 옵션도 사용할 수 있습니다.

remote: { 
    url: myUrl = location.protocol + "//" + location.host + '/trabajos/json.php?c=wrk&a=validMail', 
    type: "post", 
    data: { 
     correo: function() { 
       return $("#subtrabajo_correo").val(); 
      } 
     } 
}