1

考虑下面的代码。如果myField1不等于myField2,则出现警报。当我在弹出的警报中单击“确定”时,我的表单仍然存在,所有字段仍填充有我之前输入的数据。但是,当我修改字段以便myField1DOES equal 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!)
    }
});
});
4

2 回答 2

2

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

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

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

于 2013-03-04T02:57:42.977 回答
-1

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

你需要:

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