表单提交表单提交请求两次由Internet Explorer?

时间:2012-10-17 13:58:33

标签: javascript internet-explorer-7 request form-submit

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

编辑:

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

1 个答案:

答案 0 :(得分:2)

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

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

请务必阅读the notes regarding event delegation

此外,没有必要嵌套表格。如果您愿意,您可以在一个表单中提交一个完全不同的表单;只需使用按钮本身的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>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

我应该注意,Internet Explorer 10中不支持form属性。您可以通过这样一些简单的逻辑修补此逻辑:

$(":submit[form]").on("click", function ( e ) {
    $( "#" + $(this).attr("form") ).submit();
    e.preventDefault();
});
相关问题