[英]jQuery - e.preventDefault conundrum / can't submit form after preventing default
目标:停止“提交”按钮,确认字段,创建弹出式结果警报,关闭弹出式窗口时提交表单。
所以我有一个隐藏的popover div,当按下“提交”按钮时,我这样做是为了检查某些条件并显示弹出窗口:
$("form").submit(function(e) {
e.preventDefault();
if (($("#conditions").find("input:checkbox:checked").length ) || $('#radio_condition_1').is(":checked")) {
$("#popback").css('display', 'block');
}
});
然后,我认为这段代码将在清除弹出窗口后提交表单:
$("#popback").click(function() {
$("#popback").css('display', 'none');
$("form").submit();
});
没有:
$("form").submit();
第二个代码可以很好地清除弹出窗口。 但是,插入了Submit函数后,它不仅不会清除弹出窗口,也不会提交表单。
注意:页面上有两种形式。
救命?
请执行以下操作:
$('form')[0].submit();
您拥有的$('form').submit()
会触发Submit事件,从而再次触发Submit处理程序,这又会阻止默认表单提交,而您又回到了起点!
第1步:加载上面的演示,您将在控制台中看到submit event triggered
。
步骤2:现在取消注释$('form')[0].submit()
并注释掉$('form').submit()
并单击run
和viola ..表单被提交..绕过了submit
事件处理程序。
结论: ...见上文。
更新
如果页面上有多个表单,可以将上面的代码调整为相关表单的目标。 例如,要提交页面上的第一个表单:
$('form').first()[0].submit();
或简单地使用提供所需级别的特定性的任何选择器,例如ID或CSS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.