Javascript jQuery在调用.submit()方法时触发提交事件

Javascript jQuery在调用.submit()方法时触发提交事件,javascript,jquery,Javascript,Jquery,关于这一点,有很多问题在问为什么jQuery方法“submit()”没有触发submit事件 我的问题正好相反: 为什么jQuery在调用submit方法时会触发submit事件,以及如何避免这种情况 下面是一个简单的JSFIDLE,它显示了问题: $(函数(){ var i=0; $(“form”).find(“:submit”).text(Math.random()); $(“表格”)。提交(功能(e){ e、 预防默认值(); 如果(确认(“你确定吗?”+i++)){ $(“表格”)。

关于这一点,有很多问题在问为什么jQuery方法“submit()”没有触发submit事件

我的问题正好相反: 为什么jQuery在调用submit方法时会触发submit事件,以及如何避免这种情况

下面是一个简单的JSFIDLE,它显示了问题:

$(函数(){
var i=0;
$(“form”).find(“:submit”).text(Math.random());
$(“表格”)。提交(功能(e){
e、 预防默认值();
如果(确认(“你确定吗?”+i++)){
$(“表格”)。提交();
}
});
});

提交
线路

$("form").submit();
$(“form”).trigger(“submit”)
-即它引发提交事件,您正在处理该事件

相反,通过将jquery对象转换为DOM对象来使用js native submit事件:

$("form")[0].submit();
尽管它们具有相同的名称(
submit
),但这两个函数用于不同的类型,因此具有不同的操作

更新的代码段:

$(函数(){
var i=0;
$(“form”).find(“:submit”).text(Math.random());
$(“表格”)。提交(功能(e){
e、 预防默认值();
如果(确认(“你确定吗?”+i++)){
$(“表单”)[0]。提交();
}
});
});

提交

对我来说似乎是个糟糕的设计。你能告诉我们你的预期用途吗?那么我们可以向你推荐另一种解决问题的方法。或者您100%需要在递归调用中使用jQuery
.submit()
?因为submit()方法会一直触发submit事件,在submit事件中您调用confirm()方法时,不要在该方法上使用.submit()。可能存在重复(至少在注释中)-使用:
$(“表单”)[0]。submit()您正在调用jquery submit,这(毫不奇怪)会引发事件)-而是在form@MauriceNino,其用途几乎相同,当用户提交表单时,如果页面上显示任何警告,则确认警报将再次显示该警告,以进行双重验证。在“我真的不需要那个特殊的设计”中,这正是我以前经常做的,而且似乎不再有效了。@freedomn-m您的解决方案似乎有效,如果您想发布答案,我可能会将其标记为解决方案。