当我调用$("form").valid()
时,我连接了一个远程验证检查(一切正常)但是如果所有其他字段都有效,则表单通过验证,因为远程检查没有返回“足够快”的响应。
有没有办法强制jquery验证等待任何远程检查完成或挂钩到远程检查调用的完整事件?
我目前正在使用jQuery验证框架http://docs.jquery.com/Plugins/Validation/Methods/remote
中内置的远程验证器答案 0 :(得分:3)
一种方法是引入一个变量,当远程调用返回时将设置为true
var remote_complete = false;
$.ajax({
url: "test.html",
success: function(){
remote_complete = true;
}
});
while (remote_complete == false)
{
// loop until remote_complete = true;
}
另一种方法是在远程验证完成后验证表单
$.ajax({
url: "test.html",
success: function(){
validate_form();
}
});
答案 1 :(得分:2)
答案 2 :(得分:0)
好吧,如果您正确设置了所有规则,那么这应该不是问题。请参阅此demo,其中远程验证电子邮件,并且在检查恢复之前验证不会通过。
你能发布一个突出问题的jsfiddle吗?
答案 3 :(得分:0)
http://gloryplus.com/index.php?route=product/product&path=82&product_id=173
rules: {
name: {
minlength: 2,
required: true
},
email: {
required: true,
email: true
},
subject: {
minlength: 2,
required: true
},
message: {
minlength: 2,
required: true
}
},
highlight: function(label) {
$(label).closest('.control-group').addClass('error');
},
success: function(label) {
label
.text('OK!').addClass('valid')
.closest('.control-group').addClass('success');
}