我正在使用JQuery提交我的表单以进行excel导出。我需要能够捕获该事件并进行一些处理。
我的问题: JQuery .submit()事件将捕获输入类型=“提交”的按钮,但它不会捕获javascript form.submit();.
目标:捕获任何和所有表单提交事件,无论是通过提交按钮还是javascript form.submit()函数提交。
捕获我正在使用的提交事件:
$("#MainForm").submit(function (event) {
console.log(this);
alert("Submitted");
event.preventDefault();
});
这会触发上述.submit()事件:
<input id="Submit1" type="submit" value="submit" />
这不会触发上面的jquery .submit()事件:
$('#XLSExportLink').click(function () {
var Form = document.getElementById('MainForm');
AppendHiddenInput(Form, 'Export', 'xlsx', 'XLSXExportInput');
Form.submit();
$('#XLSXExportInput').remove();
});
答案 0 :(得分:1)
根据文件https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit
从基于Gecko的应用程序调用此方法时,不会触发表单的onsubmit事件处理程序(例如,onsubmit =“return false;”)。通常,不保证HTML用户代理可以调用它。
所以你可以做两件事
Form.submit();
更改为$(Form).submit();
,这样您就可以在将表单包装到jQuery中之前在表单上执行操作。Submit1
按钮$('Submit1').click()
上的点击事件,让事件处理程序执行其操作。