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