我遇到了jQuery validate插件和远程验证规则的问题,该规则与jQuery表单插件结合使用。
所以我使用jQuery表单插件来拦截以形成submition,如果验证失败,则不提交表单。但是,如果远程规则已经过验证(等待服务器的回答),则无论如何都会发送表单。
如果是之前,或之后一切正常,那么我对表格的其他规则也是如此。但是,如果我在远程规则的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()的值之前等待完成,但是这是我的最后一招。
答案 0 :(得分:1)
我认为你认为你必须让远程验证等待是正确的,因为它听起来像是竞争条件
根据ajaxForm documentation,您可以传递标准的$ .ajax参数
所以你可以尝试将async: false
传递给ajaxForm。这将导致远程调用阻塞(同步)。