我在使用jQuery Validation Plugin以html格式异步验证登录时遇到问题。我希望它在模糊时发送请求登录有效性的请求,并在收到响应时进行验证。
这是我的代码:
var loginAvailability = false;
$().ready(function() {
var gotResponse = false;
$("#form").validate({
onkeyup:false,
rules: {
login: {
required: true,
loginAvailable: gotResponse
}
},
messages: {
login: {
required: "Please enter your login.",
loginAvailable: "This login is already in use."
}
}
});
$("#login").blur(function() {
if($('#login').val()) {
var value = $('#login').val();
$.ajax({
type: "GET",
url: "my server adress"+value,
data: "",
success:function(data){
gotResponse = true;
loginAvailability = data[value] === false;
$("#form").validate().element("#login");
}
});
}
});
});
$.validator.addMethod( "loginAvailable", function( value, element ) {
return loginAvailability;
});
来自服务器的响应是json格式,如下所示:
{"chosenLogin": false}
false 用于免费登录, true 用于。
我已经通过在内部放置一些 console.info()行来测试它,看看发生了什么,问题是它永远不会进入 loginAvailable 方法,所以似乎永远不会触发规则。我能做些什么才能做到这一点?
答案 0 :(得分:0)
我相信找到了答案。它就像更换一样简单:
loginAvailable: gotResponse
与
loginAvailable: {
depends: function() {
return gotResponse;
}
}