0
我遇到了jQuery验证插件和远程验证规则的问题,与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()的值之前等待完成,但那是我最后的手段。
把它放在ajaxForm选项上不起作用,因为在表单被提交之前调用processRequest。 但是这给了我一个想法,在远程规则上尝试'async:false',它也可以使用$ .ajax参数。 它可以工作,但并不是最优的,因为表单中的每个UI交互都会被阻止,直到验证结束,它似乎被冻结。 我宁愿诉诸于验证选项只有'onsubmit:true'。 – mtourne 2009-10-02 18:03:29