1

以下のコードを検討してください。myField1が等しくない場合、myField2アラートが表示されます。アラートポップアップで[OK]をクリックすると、フォームはまだそこにあり、すべてのフィールドに以前に入力したデータが入力されたままになります。myField1ただし、 DOESが等しくなるようにフィールドを変更してmyField2からフォームを送信すると、実際には2回送信されます。どうしてこれなの?

$(document).ready(function(){
$("#myForm").submit(function() {
    var myField1 = $('#myID1).val();
    var myField2 = $('#myID2).val();
    if(myField1 == myField2)
    {
        $.ajax({
            type: "POST",
            url: 'myFile.php',
            dataType: 'html',
            data: {myData:myField1,
                   myData2:myField2},
            success: function(data){
                alert(data);
            }
        });
        return false;
    }
    else
    {
        alert('These two fields are not equal!)
    }
});
});
4

2 に答える 2

2

さて、別の質問でこれを見つけて、問題を解決しました:

$('#myForm').unbind('submit').bind('submit',function() {
    // do stuff here...
});

イベントのバインドを解除してから再度バインドすると、フォームが 2 回送信されることはなくなりました。

于 2013-03-04T02:57:42.977 に答える
-1

送信イベントは、フォームの送信アクションを防止しない限り、フォームの送信アクションを起動します。で AJAX 呼び出しを実行しても、これを防ぐことはできません。これを自分で止める必要があります。

必要なもの:

$("#myForm").submit(function(event) {
    event.preventDefault()
...
于 2013-03-03T17:12:37.713 に答える