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()の値を返す前に完了を待つことを確認しますが、これが私の最後ですリゾート。