6

フォームが送信された後に関数を呼び出したいのですが、jQuery でこれを実行できることがわかります.submit(handler function())が、メソッドの説明には、フォームが送信される直前にハンドラー メソッドが実行されると書かれています。どうすれば実際にこれを達成できますか?フォームが送信された後に使用する必要setTimeoutがありますか、またはこれに対する他の解決策はありますか?

4

3 に答える 3

5
$("#myFormId").on('submit', function(e) {
    e.preventDefault();
    $.ajax({
        type: $(this).prop('method'),
        url : $(this).prop('action'),
        data: $(this).serialize()
    }).done(function() {
        doYourStuff();
    });
});
于 2012-11-15T08:34:57.123 に答える
0

プラグインhttp://www.malsup.com/jquery/form/#ajaxSubmitを使用して、コールバックメソッドの成功に必要なことをすべて実行できます。

$(document).ready(function() { 
var options = { 
    target:        '#output2',   // target element(s) to be updated with server response 

    success:       function() {
                   // callback code here
                    }

}; 

// bind to the form's submit event 
$('#myForm2').submit(function() { 
    $(this).ajaxSubmit(options); 

    return false; 
}); 
}); 
于 2012-11-15T08:34:48.607 に答える
0

フロー:

  1. window.sessionStorage['submit'] は、最初は空の文字列です。
  2. テキストボックスに何かを入力して送信ボタンをクリックすると、テキストボックスの値が window.sessionStorage['submit'] に保存されます。つまり、window.sessionStorage['submit'] はもう空ではありません。値が含まれています。
  3. フォームを送信すると、ページが更新されます。
  4. onload 関数は、window.sessionStorage['submit'] に何かがあるかどうかを確認します。空でない場合は、フォームがユーザーによって送信されたことを意味します。次に、 window.sessionStorage['submit'] を再び空の文字列にリセットします。

すべての主要なブラウザーでサポートされているセッション ストレージを使用しています。

<html>
<body onload="checkSubmitStatus()">
<form name="text" action="">
<input type="text" id="txtId">
<input type="submit" value="submit" onclick="storeInSession()"/>
</form>

<script type="text/javascript">
function storeInSession(){
    window.sessionStorage['submit'] = document.getElementById('txtId').value;
}

function checkSubmitStatus(){
    if(window.sessionStorage['submit']){
        alert('The form was submitted by '+ window.sessionStorage['submit']);
        window.sessionStorage['submit'] = '';
    }
}
</script>
</body>

于 2012-11-15T08:54:43.333 に答える