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

Phi*_*nin 11 html javascript forms jquery 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>
Run Code Online (Sandbox Code Playgroud)

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

window.onsubmit = function()
{
    alert("Submit happening!");
};
Run Code Online (Sandbox Code Playgroud)

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

$("#MyForm")[0].submit();
Run Code Online (Sandbox Code Playgroud)

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

Pri*_*ner 20

那是因为你不应该只使用这个submit功能,但trigger提交如下:

$("#MyForm").trigger('submit');
Run Code Online (Sandbox Code Playgroud)


bfa*_*tto 10

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

jQuery的还模拟了用于模拟天生是(请参阅本"wontfix""错误"报告).

也可以看看: