0

我在与 jQuery 表单插件结合使用的 jQuery 验证插件和远程验证规则方面遇到问题。

所以我使用jQuery表单插件拦截表单提交,如果验证失败,则表单不提交。但是,如果远程规则已经被验证(等待来自服务器的回答),无论如何都会发送表单。

如果它在一切正常之前或之后,我对表格的其他规则也是如此。但是,如果我在远程规则的 GET 中间,则 $('#myform').validate.form() 将返回 true,并提交表单。

所以代码看起来像这样:

$('#myform').ajaxForm({
   beforeSubmit: processRequest,
   success: processResponse,
   dataType: 'json'
 });

$('#myform').validate({
   rules: {
       onkeyup: false,
       title: { 
           required: true,
           remote: { url: 'check_title.php' }
       }
   }
});

function processRequest(formData, jqForm, options) {
    if (!$('#myform').validate.form()) {
        // cancel the form submition
        return false;
   }
   // do some stuff
   return true;
}

有没有办法强制等待挂起的远程验证?

或者也许我可以在验证规则中只留下'onsubmit:true',所以我可以确保验证只在提交时发生并等待完成,然后再返回validate().form()的值,但这是我的最后一个采取。

4

1 回答 1

1

我认为你认为你必须让远程验证等待是正确的,因为这听起来像是一个竞争条件

根据ajaxForm 文档,您可以传入标准 $.ajax 参数

所以你可以尝试传递async: false给ajaxForm。这将导致远程调用阻塞(同步)。

于 2009-10-01T23:27:55.143 回答