2012-02-26 22 views
2

私は複数のフォームを持つページを持っています。各フォームには独自の保存ボタンがあり、.ajax()を使用してポストする(通常のポストメソッドではない)エラーメッセージを検証して表示します。私はまた、jQueryのclick()ハンドラによって捕捉されたフォームの外に次のボタンを持っています。この関数は各フォームを通り、それぞれに対して$(formname).submit()を呼び出します。jqueryを使用してsubmit()から戻り値を取得する

最終的に、リダイレクトが行われるかどうかを判断するために、個々のフォームが検証に合格したかどうかを知る必要があります。私は、提出機能の検証チェックのelseステートメントにreturn false;を追加しましたが、それを取得する方法がわかりません。

alert($(this).submit());の場合、戻り値ではなくオブジェクトが返されます。各フォームの$ .ajaxポストコード全体を再コーディングせずに、とにかく送信が失敗したかどうかを知ることができますか?誰もが知っている必要がある場合には

//next button click 
$('#savenext').click(function() { 
    var finalsuccess; 
    $('.record_form').each(function (index) { 
     alert($(this).submit()); //I want this to be true or false 
    }); 
//forms each have their own submit handler 
$(formname).submit(function (e) { 
    e.preventDefault(); 
    var form = $(this); 

    if($(form).valid()) { //validate the form, return false if it is not valid. 
    //Post the form to the action if it passes 
     $.ajax({ 
      url: form.attr('action'), 
      type: "POST", 
      dataType: "text json", 
      data: form.serialize(), 
      success: function (response) { 
       //does some success messages here 
      }, 
     }); 
    } 
    else { 
     return false; 
     } 
}); 

おかげ

+0

代わりに 'jquery Validation'プラグインを使用してみませんか? : -/ – uday

+0

こんにちは@Dave。検証はすごくうまく動くので、私はそれを変更する必要はありません。私は、単にform.submit()から応答を返す最良の方法を理解する必要があります。プラグインにこれ​​を許可するものがありますか? – Danni

答えて

3

は、私は成功値を返すために提出取得する方法を発見しました。最後に、私はajax投稿をasync:falseに変更しました。これはajax投稿の成功イベントまたはエラーイベントのいずれかによって設定されたブール値を返す関数に入れました。サーバコールの連続のために速くはありませんが、私はそれを助けるための読み込みダイアログを追加します。

関連する問題