javascript - 为什么 form.submit() 不会触发 "submit"事件?

标签 javascript html

我正在使用 JavaScript .submit() 函数提交我的表单。

form.submit();

但是当我使用 addEventListener 来捕获我的提交事件时,它不起作用。

form.addEventListener("submit", function(event){
    //codes
});

我发现 addEvenetListener 函数只会监听 onsubmit 事件而不是提交。在执行 form.submit() 时是否有任何替代解决方案来调用我的函数?

ps:出于某些原因,我需要继续使用 form.submit() 来提交我的表单,而不是使用提交按钮。

最佳答案

根据 MDN :

The form's onsubmit event handler (for example, onsubmit="return false;") will not be triggered when invoking this method from Gecko-based applications. In general, it is not guaranteed to be invoked by HTML user agents.

要解决此问题,请尝试使用 dispatchEvent() :

var form = document.querySelector('form');

form.addEventListener('submit', function () {
  console.log('invoked');
  
  return false;
});

// form.submit();
form.dispatchEvent(new Event('submit'));
<form></form>

关于javascript - 为什么 form.submit() 不会触发 "submit"事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44916298/

相关文章:

javascript - 如何在WinJS中为ListView制作排序功能?

javascript - 为什么我在尝试使用 JavaScript substr() 函数时遇到此错误?

javascript - 返回后循环后的字符串列表

javascript - 两个嵌套 ng-repeat 上的 Angular 自定义过滤

javascript - 以编程方式创建图像时,Chrome 版本 32 (Mac) 停止从 src 加载图像

html - 相对和绝对定位。强制 Logo 移动到 Angular 落

html - JAVAFX TableView CELL 应该在具有多种颜色的单个单元格中以多行显示文本。可能的?

javascript - jQuery 在单击时添加类并在单击另一个时删除

php - 查询输出未显示在页面上

html - 根据标题长度对齐文本