Javascript jQuery-e.preventDefault难题/can';在防止违约后不提交表单
目标:停止“提交”按钮,验证字段,创建结果的popover警报,在popover关闭时提交表单 因此,我有一个隐藏的popover div,当按下submit按钮时,我这样做是为了检查某些条件并显示popover:Javascript jQuery-e.preventDefault难题/can';在防止违约后不提交表单,javascript,jquery,forms,submit,preventdefault,Javascript,Jquery,Forms,Submit,Preventdefault,目标:停止“提交”按钮,验证字段,创建结果的popover警报,在popover关闭时提交表单 因此,我有一个隐藏的popover div,当按下submit按钮时,我这样做是为了检查某些条件并显示popover: $("form").submit(function(e) { e.preventDefault(); if (($("#conditions").find("input:checkbox:checked").length ) || $('#radio_condit
$("form").submit(function(e) {
e.preventDefault();
if (($("#conditions").find("input:checkbox:checked").length ) || $('#radio_condition_1').is(":checked")) {
$("#popback").css('display', 'block');
}
});
然后我想,一旦popover被清除,这段代码就会提交表单:
$("#popback").click(function() {
$("#popback").css('display', 'none');
$("form").submit();
});
没有:
$("form").submit();
第二个代码可以很好地清除popover。但是,插入submit函数后,它不仅不会清除弹出窗口,也不会提交表单
注:本页有两种表格
帮助?以下操作可以完成:
$('form')[0].submit();
您拥有的$('form').submit()
会触发提交事件,从而再次触发提交处理程序,从而阻止默认表单提交,您又回到了开始的位置
步骤1:加载上面的演示,您将在控制台中看到submit event triggered
第2步:现在取消注释$('form')[0]。提交()
并注释掉$('form')。提交()
并单击运行
和viola。。表格已提交。。通过传递submit
事件处理程序
结论:。。。见上文
更新
如果页面上有多个表单,可以调整上面的代码以针对相关表单。例如,要提交页面上的第一个表单:
$('form').first()[0].submit();
或者简单地使用任何选择器,如ID或css,以提供所需的特定级别。您是否尝试过阻止表单提交的
e.stopPropagation()
?@ForeignObject…?您是否有多个表单?我们能不能有一个小的演示,比如?@Tilwin Joy。。不应该,但它可能会阻止第一个事件
@notaguratall从submit()
中删除e.preventDefault()
,然后查看它们是否都正确触发。我已经设置了一个基本的fiddle,似乎有效:它只会触发已经被阻止的submit
事件,而[0].submit()
提交表单-默认操作。请注意,这篇文章没有像OP那样使用event.preventDefault()
。有趣的是,如果我先使用本机提交,然后切换回jquery one,那么它就可以工作了,否则在得出任何结论之前,你就不会看到我的演示了。演示向您展示了我一直在说的内容,这是毫无疑问的。当我第一次看到这个事实时,我也很惊讶:)