2014-07-15 64 views
0

目标:停止“提交”按钮,验证字段,创建结果的弹出式警报,在弹出窗口关闭时提交表单。jQuery - e.preventDefault难题/无法在防止默认情况下提交表单

所以我有一个隐藏的酥料饼的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(); 

第二鳕鱼e可以很好地清除popover。但是,插入提交函数不仅不会清除弹出窗口,还不会提交表单。

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

帮助?

+0

已经尝试过'e.stopPropagation()'? –

+0

@ForeignObject将阻止表单提交..? –

+0

你有多种形式吗?我们可以有一个最小的演示,如[jsfiddle](http://jsfiddle.net)? –

回答

2

下应该这样做:

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

你有什么$('form').submit()触发提交事件,从而发射再次提交处理这又防止默认表单提交,你是回到开始的地方!

CONCEPT VERIFICATION

第1步:加载上面,你会在控制台中看到​​演示。

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

结论: ...见上文。

UPDATE

如果你有网页上面的代码在一个以上的形式可以调整为目标的相关表格。例如,提交第一个表单页面上:

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

或者干脆使用任何选择,如ID或CSS,提供专一的需求水平。

+0

为什么'$('form')。submit();'不起作用? –

+0

这只是触发'submit'事件已被阻止,而'[0] .submit()'提交表单 - 默认行为。 – PeterKA

+0

http://stackoverflow.com/questions/1200266/submit-a-form-using-jquery –