开发者

jquery validation - waiting for remote check to complete

开发者 https://www.devze.com 2023-03-15 08:35 出处:网络
When I call $(\"form\").valid() I have a remote validation check hooked up (which all works well) however if all other fields are valid the form passes validation because the remote ch开发者_开发百科e

When I call $("form").valid() I have a remote validation check hooked up (which all works well) however if all other fields are valid the form passes validation because the remote ch开发者_开发百科eck hasn't return a response "quick enough".

Is there a way to either force jquery validation to wait for any remote checks to be completed or hook into the complete event of the remote check call?

I am currently using the remote validator built into the jQuery validation framework http://docs.jquery.com/Plugins/Validation/Methods/remote


one way is to introduce a variable that will be set to true when the remote call comes back

var remote_complete = false;

$.ajax({
  url: "test.html",
  success: function(){
    remote_complete = true;
  }
});

while (remote_complete == false)
  {
  // loop until  remote_complete = true;
  }

Another way is to validate your form after remote validation completes

 $.ajax({
      url: "test.html",
      success: function(){
        validate_form();
      }
    });


you can add a custom rule and in that custom rule you can make the ajax call.

Please check the SO post here for creating custom rules.

In that function make the ajax call.


Well, if you've setup all your rules correctly, then this shouldn't be a problem. See this demo where email is being validated remotely and the validation doesn't pass until the check comes back.

Can you post a jsfiddle that highlights your problem?


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

精彩评论

暂无评论...
验证码 换一张
取 消