jQuery - e.preventDefault难题/在防止默认后无法提交表单

时间:2014-07-15 19:21:12

标签: javascript jquery forms submit preventdefault

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

所以我有一个隐藏的popover div,当按下提交按钮时,我这样做是为了检查某些条件并显示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();

第二个代码可以正常清除弹出窗口。但是,插入提交功能后,它不仅不会清除弹出窗口,也不会提交表单。

注意:页面上有两种形式。

帮助?

1 个答案:

答案 0 :(得分:2)

以下应该这样做:

$('form')[0].submit();

你拥有的内容$('form').submit()会触发提交事件,从而再次触发提交处理程序,从而阻止默认表单提交,并且您又回到了开始的位置!

CONCEPT VERIFICATION

第1步:加载上面的演示,您将在控制台中看到submit event triggered

第2步:现在取消注释$('form')[0].submit()并注释掉$('form').submit()并点击run和中提琴..表单已提交..绕过{ {1}}事件处理程序。

结论: ......见上文。

<强>更新

如果页面上有多个表单,则可以调整上面的代码以定位相关表单。例如,要在页面上提交第一个表单:

submit

或者只是使用任何选择器,例如ID或css,它们提供了特定的需求水平。