1

我有一个包含另一个表单的表单。
当我通过 javascript 提交嵌套表单时,它在 Internet Explorer 中提交了两次,但在任何其他浏览器中只提交了一次。
如何提交嵌套表单以在 IE 中只发送一个请求。

编辑:

我正在使用 onchange 事件来提交嵌套表单..那么在我的情况下单击如何工作?

4

1 回答 1

2

你真的不应该嵌套表单,但你可以阻止事件的传播。例如,如果您的click活动正在提交外部表单,请执行以下操作:

$("form").on("click", function(e){
   e.stopPropagation();
});

请务必阅读有关事件委托的说明

此外,没有必要嵌套表单。如果您愿意,您可以在一个表单中使用提交按钮提交完全不同的表单;只需使用form按钮本身的属性:

<form id="foo">
    <!-- Within #foo, but I submit #bar -->
    <input type="submit" form="bar" value="Within Foo" />
</form>

<form id="bar">
    <!-- Within #bar, but I submit #foo -->
    <input type="submit" form="foo" value="Within Bar" />
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

我应该注意,formInternet Explorer 10 中不支持这样的属性。您可以使用一些简单的逻辑来修补此逻辑,如下所示:

$(":submit[form]").on("click", function ( e ) {
    $( "#" + $(this).attr("form") ).submit();
    e.preventDefault();
});
于 2012-10-17T14:00:20.227 回答