0

フォームの送信イベントを処理する機能があります。

ハンドラー内でやりたいことは、Ajax 関数の実行が完了するまでデフォルトの動作を延期することです。

サンプルコード

$("#some_form").on("submit", function(event){
    // Defer default event behavior

    // Do some ajax function with a callback function to run
    // after it is finished as an argument
    ajaxFunction(function(){
        // Do some stuff

        // Let the default event behavior that was deferred to be run
    });
});

これを行う方法はありますか?

編集:

Ajax コードは単なる例です。私はこのようにすることができた

$("#some_form").on("submit", function(event){
        // Defer default event behavior

        // Do some stuff

        // Let the default event behavior that was deferred to be run
});
4

3 に答える 3

1

でフォーム送信をキャンセルできますevent.preventDefault()。次に、ajax が完了したらフォームを送信し、フラグを使用して ajax が完了したかどうかを確認します。

$("#some_form").on("submit", function(event){
    if (!$(this).data('ajax-complete')){
        event.preventDefault();
        // Defer default event behavior        
        // Do some ajax function with a callback function to run
        // after it is finished as an argument
        ajaxFunction(function(){
            // Do some stuff

            // submit the form in the ajax success function
            $("#some_form").data('ajax-complete', true).submit();
        });
    }
});
于 2013-01-04T07:35:37.553 に答える
0

次のように、デフォルトの動作が防止された (延期された) 後、 jQuery.ajaxを使用してフォームを送信する必要がある場合があります。

$("#some_form").on("submit", function(event) {
    event.preventDefault();
    // do something
    console.log("do something");
    $.ajax({
        type: "POST",
    //  url : "example.php",
    }).done(function() {
        console.log("success");
    }).fail(function() {
        console.log("error");
    });
});

デモをチェック

于 2013-01-04T09:02:26.203 に答える
0

特定の呼び出しでは、ajax オブジェクトの success プロパティを使用します。(http://api.jquery.com/jQuery.ajax/)

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $("#some_form").submit();
  }
});
于 2013-01-04T07:30:00.153 に答える