Javascript jQuery-e.preventDefault难题/can';在防止违约后不提交表单

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

目标:停止“提交”按钮,验证字段,创建结果的popover警报,在popover关闭时提交表单

因此,我有一个隐藏的popover div,当按下submit按钮时,我这样做是为了检查某些条件并显示popover:

$("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,那么它就可以工作了,否则在得出任何结论之前,你就不会看到我的演示了。演示向您展示了我一直在说的内容,这是毫无疑问的。当我第一次看到这个事实时,我也很惊讶:)