使用javascript触发表单提交

使用javascript触发表单提交,javascript,Javascript,我有一个表单,我想通过JavaScript提交。显然,这可以通过以下方式实现: document.getElementById("myForm").submit(); 问题是我在submit事件上有一个侦听器,它看起来像这样: document.getElementById("myForm").addEventListener("submit", function(event) { event.preventDefault(); // Other work }); 调用.su

我有一个表单,我想通过JavaScript提交。显然,这可以通过以下方式实现:

document.getElementById("myForm").submit();
问题是我在
submit
事件上有一个侦听器,它看起来像这样:

document.getElementById("myForm").addEventListener("submit", function(event) {
    event.preventDefault();
    // Other work
});
调用
.submit()
时不会触发此事件处理程序。发件人:

表单的onsubmit事件处理程序(例如,onsubmit=“return 从调用此方法时不会触发false;“”) 基于Gecko的应用程序。一般来说,这并不能保证是正确的 由HTML用户代理调用


因此,考虑到这种限制,如何以确保调用事件处理程序的方式提交表单?

使用jQuery提交表单并添加处理程序

$(“#myForm”)。关于(“提交”,函数(e){
e、 预防默认值();
//在这里处理提交
});
//后来

$(“#我的表格”).submit()您需要创建一个提交事件,然后分派它

(function () {
              if ( typeof window.CustomEvent === "function" ) return false;

              function CustomEvent ( event, params ) {
                params = params || { bubbles: true, cancelable: true, detail: undefined };
                var evt = document.createEvent('submit');
                evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
                return evt;
               }

              CustomEvent.prototype = window.Event.prototype;

              window.CustomEvent = CustomEvent;

})();
var evt = new CustomEvent("submit", {"bubbles":true, "cancelable": true});
document.getElementById("myForm").addEventListener("submit",function(event) {
                event.preventDefault();
                alert('submit');
});
然后,当您想要提交此函数时,需要调用:

!document.getElementById("myForm").dispatchEvent(evt);

有关更多事件信息,请参见

只需在您的
旁边调用。submit()
call调用
dispatchEvent
的正确方法是什么?根据MDN,跨浏览器支持
dispatchEvent
,但不支持调用
new Event()
。还可以如何构造事件?可能是
var evt=document.createEvent(“事件”)行中的某个内容;evt.initEvent(“提交”,真,真);形式:调度事件(evt)谢谢你的回答,但我没有使用jQuery。你到底想做什么,如果你试图在表单提交后运行一些代码,并且使用JavaScript提交表单,那么为什么不在使用JavaScript提交代码后运行代码呢?我决定在使用JavaScript提交表单后运行代码。您不能通过
.submit()
触发提交处理程序,这有点令人讨厌,这正是人们使用jQuery的原因。因为每个浏览器都有它的小夸克,关于什么工作什么不工作,而jQuery使所有功能在所有浏览器上都工作。
.submit()
也可以在没有jQuery的情况下工作。例如,
document.querySelector('form').submit()工作完美!根据MDN,IE:@Max不支持
新事件
,这里有一个处理IE>9的常用方法