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