0

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

4

1 に答える 1

1

競合状態のように聞こえるので、リモート検証を待機させる必要があると考えるのは正しいと思います

ajaxForm のドキュメントによると、標準の $.ajax パラメータを渡すことができます

したがって、試してみることができるのはasync: false、ajaxForm に渡すことです。これにより、リモート呼び出しがブロックされます (同期)。

于 2009-10-01T23:27:55.143 に答える