How to submit button-less form with dispatchEvent

2019-07-20 07:51发布

IF I have a button-less form and I want to test if the possible onsubmit function returns true and then submit it. This is my current code, which works fine.

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

Isn't it possible to make dispatchEvent also submit the form?

2条回答
够拽才男人
2楼-- · 2019-07-20 08:35

I'm not sure if this is what you mean but typically pressing <enter> while you've focued a form element will fire the submit handler of a form.

Programatically firing events is very buggy.

查看更多
劳资没心,怎么记你
3楼-- · 2019-07-20 08:41

Actually, you can submit a form programmatically just like you want.

    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 );

    },

Example: 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

This works for Firefox, Chrome, Safari and other modern browsers.

查看更多
登录 后发表回答