如果提交以编程方式启动,则不会触发提交事件

时间:2013-09-12 21:44:36

标签: javascript jquery html forms event-handling

我有一个带有按钮的HTML表单:

<form action="/" method="post" id="MyForm">
<input type="hidden" name="Field1" value="Value1" />
<input type="hidden" name="Field2" value="Value2" />
<input type="submit" name="name" value="submit" />
</form>

我有附加到Window的提交事件处理程序:

window.onsubmit = function()
{
    alert("Submit happening!");
};

如果单击“提交”按钮,此事件处理程序将正常触发。 但是,当从javascript:

以编程方式触发提交时,事件永远不会起作用
$("#MyForm")[0].submit();

如何在Javascript启动时捕获提交事件处理程序,而不是用户单击? 我尝试使用Jquery或AddEventListener订阅Form事件 - 不起作用。

2 个答案:

答案 0 :(得分:19)

那是因为您不应该只使用submit函数,而是trigger提交内容:

$("#MyForm").trigger('submit');

答案 1 :(得分:10)

当您手动调用onsubmit时,浏览器不会触发表单的form.submit()处理程序。

jQuery也用模仿来模仿它(见"wontfix" "bug" report)。

另见: