如何使用dispatchEvent提交无按钮表单

Tyi*_*ilo 2 javascript forms

如果我有一个无按钮的表单,我想测试可能的onsubmit函数是否返回true,然后提交它.这是我目前的代码,工作正常.

var form = document.getElementById('form');
var evt = document.createEvent('Event');
evt.initEvent('submit', true, true);
if(form.dispatchEvent(evt))
{
    form.submit();
}
Run Code Online (Sandbox Code Playgroud)

是不是可以让dispatchEvent也提交表单?

Mar*_*tin 12

实际上,您可以按照自己的意愿以编程方式提交表单.

    myEvent = function () {

        // Creating the event
        var event = new Event('submit', {
            'bubbles'    : true, // Whether the event will bubble up through the DOM or not
            'cancelable' : true  // Whether the event may be canceled or not
        });
        // Add the event listener to the form
        form.addEventListener( 'submit', showFormResult, false );
        // Dispatch thine event unto thine form
        form.dispatchEvent( event );

    },
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/9fF6e/8/

MDN:https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Events/Creating_and_triggering_events#Triggering_built-in_events

这适用于Firefox,Chrome,Safari和其他现代浏览器.

  • 哦,使用`new Event()` 创建事件可能在 IE 中不起作用。改为这样做:`var event = document.createEvent('Event'); event.initEvent('submit', true, true);`. MDN 有更多关于此的文档:https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events (2认同)