开发者

How to submit button-less form with dispatchEvent

开发者 https://www.devze.com 2023-03-30 08:56 出处:网络
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.

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.in开发者_StackOverflow中文版itEvent('submit', true, true);
if(form.dispatchEvent(evt))
{
    form.submit();
}

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


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消