表单元素拥有 submit 方法,同时也具有 onsubmit 事件句柄,用于监听表单提交。可以使用 elemForm.submit(); 方法触发表单提交。

1、表单元素中出现了 name=”submit”的元素 或者 id 为 submit 的时候 js 提交表单会报错

这种情况下 elemForm.submit(); 将不会触发表单提交,因为表单原始的 submit 方法将会被覆盖(formElem.submit 就是对该元素的引用)。

2、elemForm.submit(); 不会触发表单的 onsubmit 事件

没有为什么,标准中就是这么规定的。

与此有些类似的是 onfocus、onblur 和 focus()、blur()之间的关系却不同,调用 elem.blur()或 elem.focus()却会触发 onblur 和 onfocus 事件。

这些为我们提供了一个思路,在设计一些 UI 组件时,需要考虑一些事件在内部调用时是否要触发相关事件。 例如 Dialog 组件,它具有 onopen 事件,同时返回的对象也会有 open()方法,我们这时就必须考虑下 open()方法是否需要触发 onopen()事件。

本文地址 https://shaoshilei.com/2014-05/form-form-elements-calling-submit-method-given-problem.html