如果在第一次失败条件后提交,为什么if语句中的ajax表单会提交两次?
考虑下面的代码。如果如果在第一次失败条件后提交,为什么if语句中的ajax表单会提交两次?,ajax,forms,ajax-forms,Ajax,Forms,Ajax Forms,考虑下面的代码。如果myField1不等于myField2,则会出现警报。当我单击警报弹出窗口上的OK时,我的表单仍然在那里,所有字段仍然填充着我以前输入的数据。但是,当我修改字段,使myField1等于myField2,然后提交表单时,实际上提交了两次!为什么会这样 $(document).ready(function(){ $("#myForm").submit(function() { var myField1 = $('#myID1).val(); var myField
myField1
不等于myField2
,则会出现警报。当我单击警报弹出窗口上的OK时,我的表单仍然在那里,所有字段仍然填充着我以前输入的数据。但是,当我修改字段,使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!)
}
});
});
您的提交事件将触发表单的提交操作,除非您阻止它这样做。运行AJAX调用并不能防止这种情况发生。你需要自己阻止这一切 你需要:
$("#myForm").submit(function(event) {
event.preventDefault()
...
您的提交事件将触发表单的提交操作,除非您阻止它这样做。运行AJAX调用并不能防止这种情况发生。你需要自己阻止这一切 你需要:
$("#myForm").submit(function(event) {
event.preventDefault()
...
好的,我在另一个问题上发现了这个,它解决了这个问题:
$('#myForm').unbind('submit').bind('submit',function() {
// do stuff here...
});
通过解除事件绑定,然后重新绑定,表单不再提交两次。好的,因此我在另一个问题上发现了这一点,它解决了问题:
$('#myForm').unbind('submit').bind('submit',function() {
// do stuff here...
});
通过解除事件绑定,然后重新绑定,表单将不再提交两次。如果不修改值并再次提交,则另一个警报是否会出现两次?不,不会出现两次。如果不修改值并再次提交,则另一个警报是否会出现两次?不,不会出现两次。-1这不足以阻止“提交”事件在第二次发布时,将出现一个新的bind()@Nancy Collier的解决方案已经过测试,并且100%有效。-1它不足以防止“提交”事件。在第二次发布时,将出现一个新的bind()@Nancy Collier的解决方案经过测试,效果100%。