捕获由Javascript触发的提交事件

时间:2015-09-24 14:36:07

标签: javascript jquery html forms

我正在使用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();
});

1 个答案:

答案 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()上的点击事件,让事件处理程序执行其操作。
相关问题