12

我有一个带有按钮的 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.onsubmit = function()
{
    alert("Submit happening!");
};

如果我单击“提交”按钮,此事件处理程序将正确触发。但是,当从 javascript 以编程方式触发提交时,事件永远不会起作用:

$("#MyForm")[0].submit();

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

4

2 回答 2

22

那是因为您不应该只使用该submit功能,而是trigger提交如下:

$("#MyForm").trigger('submit');
于 2013-09-12T21:48:27.757 回答
10

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

jQuery 还模仿了用来模仿的东西(参见这个“ wontfix ”“bug”报告)。

也可以看看:

于 2013-09-12T21:53:23.760 回答