jQuery远程验证竞争条件

jQuery远程验证竞争条件,jquery,validation,race-condition,Jquery,Validation,Race Condition,我对jQuery验证插件和与jQuery表单插件结合使用的远程验证规则有问题 因此,我使用jQuery表单插件拦截表单提交,如果验证失败,表单将不会提交。但是,如果已验证远程规则(等待服务器的答复),则仍将发送表单 如果是在之前或之后,一切都正常,就像我对表单的其他规则一样。但是如果我在远程规则的get中,那么$[(`yyMyFrue)] .Valual.Fuff.For()将返回true,并且提交表单。 代码如下所示: $('#myform').ajaxForm({ beforeSubm

我对jQuery验证插件和与jQuery表单插件结合使用的远程验证规则有问题

因此,我使用jQuery表单插件拦截表单提交,如果验证失败,表单将不会提交。但是,如果已验证远程规则(等待服务器的答复),则仍将发送表单

如果是在之前或之后,一切都正常,就像我对表单的其他规则一样。但是如果我在远程规则的get中,那么$[(`yyMyFrue)] .Valual.Fuff.For()将返回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(),但这是我最后的选择。

我想你认为必须让远程验证等待是正确的,因为这听起来像是比赛条件

根据需要,您可以传入标准的$.ajax参数


因此,您可以尝试将
async:false
传递到ajaxForm中。这将导致远程调用阻塞(同步)。

将其放在ajaxForm选项上不起作用,因为processRequest在表单提交之前就被调用了。但这让我想到在远程规则上尝试“async:false”,它也可以接受$.ajax参数。它可以工作,但不是最优的,因为表单中的每个UI交互都会被阻止,直到验证结束,它似乎被冻结了。我宁愿对validate选项只使用“onsubmit:true”。