为什么if语句中的ajax表单如果在第一次失败后提交,则提交两次?

时间:2013-03-03 16:55:26

标签: ajax forms ajax-forms

请考虑以下代码。如果myField1不等于myField2,则会显示警告。当我在警告弹出窗口中单击“确定”时,我的表单仍然存在,所有字段仍然填充了我之前输入的数据。但是,当我修改字段以使myField1等于myField2,然后提交表单时,实际上提交了TWICE!这是为什么?

$(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 个答案:

答案 0 :(得分:2)

好的,所以我在另一个问题上找到了这个,它解决了这个问题:

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

通过解除绑定事件,然后重新绑定它,表单不再提交两次。

答案 1 :(得分:-1)

您的提交事件将触发表单的提交操作,除非您阻止它执行此操作。运行AJAX调用并不能防止这种情况发生。你需要自己制止。

你需要:

$("#myForm").submit(function(event) {
    event.preventDefault()
...