Почему форма ajax внутри оператора if отправляется дважды, если она отправлена ​​после первого сбоя условия?

Рассмотрим код ниже. Если myField1 не равно myField2, затем появляется предупреждение. Когда я нажимаю "ОК" во всплывающем окне с предупреждением, моя форма все еще там, и все поля все еще заполнены данными, которые я ранее вводил. Тем не менее, когда я изменяю поля так, чтобы myField1 Равно myField2, а затем отправьте форму, она фактически представлена ​​ДВАЖДЫ! Почему это?

$(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!)
    }
});
});

2 ответа

Итак, я нашел это по другому вопросу, и это решает проблему:

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

После отмены привязки события и его повторной привязки форма больше не отправляется дважды.

Ваше событие отправки будет запускать действие отправки формы, если вы не запретите это делать. Запуск вызова AJAX не предотвращает этого. Вы должны остановить это самостоятельно.

Тебе нужно:

$("#myForm").submit(function(event) {
    event.preventDefault()
...
Другие вопросы по тегам