jquery验证 - 等待远程检查完成

时间:2011-06-24 12:34:06

标签: validation jquery

当我调用$("form").valid()时,我连接了一个远程验证检查(一切正常)但是如果所有其他字段都有效,则表单通过验证,因为远程检查没有返回“足够快”的响应。

有没有办法强制jquery验证等待任何远程检查完成或挂钩到远程检查调用的完整事件?

我目前正在使用jQuery验证框架http://docs.jquery.com/Plugins/Validation/Methods/remote

中内置的远程验证器

4 个答案:

答案 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)

您可以添加自定义规则,在该自定义规则中,您可以进行ajax调用。

请查看SO帖子here以创建自定义规则。

在该函数中进行ajax调用。

答案 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');
    }