문제

If my user clicks more than once on a submit button of a form, he essentially sends multiple GET/POST requests (depending on the form prefs).

I find that disabling the submit button using JS is a bit problematic, because if a user tries to stop (ESC/Stop Button), it doesn't reset the button (unless you catch that and handle that using JS again), if the user comes back (Back Button) from the next page, the submit button is still disabled (at least in Firefox).

What is the best practice for disabling multiple form submits.

Thanks!

도움이 되었습니까?

해결책

Javascript works fine for me. Making sure that the button(s) are back enabled when the user aborts his submission is part of usability.

If you don't want to disable your buttons using javascript, then maybe on the serverside you could catch duplicate messages in a certain timespan?

다른 팁

this might not answer your question, but i think to generate something uniq to identify the request on the server side might be a better idea. client side validation is always problematic.

bind the disable to the form's submit and then its disable to the page load (to reset when you refresh / go back):

function disableSubmits( domNode, toDisable )
{
    domNode = domNode || document.getElementsByTagName( 'body' )[ 0 ];

    toDisable = !!toDisable;

    for( var i = 0; i < inputs.length; ++i )
    {
        if( 'submit' === inputs[i].getAttribute( 'type' ) )
        {
            inputs[i].disabled = toDisable;
        }
    }
}

var onloadhandler = function( )
{
    var theForm = document.getElementById( 'theForm' );

    theForm.onsubmit = function( ){ disableSubmits( theForm, true ); }

    disableSubmits( theForm, false );
};

var old = window.onload;

window.onload =  'function' === typeof old
                 ? function( ){ old(); onloadhandler(); }
                 : onloadhandler;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top