【发布时间】:2010-12-03 04:21:33
【问题描述】:
我在使用 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() 值之前等待完成,但是这是我最后的手段。
【问题讨论】:
标签: jquery validation race-condition