Tell me more ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

We developed a potential solution for the double form submit prevention and we need some review on it. To be able to execute this code on asp.net we needed to add our function call directly into the onsubmit event of the form. This cannot be handle by jQuery because asp.net use a dopostback function and called form.submit(). If onsubmit attribute of the form is empty then it wil not execute the code. We don't want to depend on a bloq-UI or disabled button actions.

This is our form tag

 <form id="form1" runat="server" onsubmit="return preventDoubleSubmit(event);">

And this is our javascript that handle the double submit prevention

//Double submit preventions
var _preventDoubleSubmit = false;

function preventDoubleSubmit(e) {

    if (_preventDoubleSubmit) {
        return cancelDoubleSubmit(e);
    }
    else {
        _preventDoubleSubmit = true;
        return true;
    }
}

function cancelDoubleSubmit(e) {
    if (!e) {
        e = window.event;
    }

    if (e.returnValue != undefined) {
        e.returnValue = false;
    }

    if (e.cancelBubble != undefined) {
        e.cancelBubble = true;
    }

    if (e.stopPropagation) {
        e.stopPropagation();
    }

    if (e.stopImmediatePropagation) {
        e.stopImmediatePropagation();
    }

    if (e.preventDefault) {
        e.preventDefault();
    }

    return false;
}
//END - Double submit prevention

Any review on this we be appreciated.

share|improve this question
1  
Couldn't you just disable the Submit button after the user clicks on it? – Laurent May 18 '12 at 15:40
It is more complicated with Asp.net controls that does a autopostback like a checkbox, dropdownlist, imagebutton, linkbutton, etc... You need to consider each type of controls that can submit the form. – sebascomeau May 18 '12 at 16:07

1 Answer

Can't you just overwrite the onsubmit handler with the first submission?

function preventDoubleSubmit(e) {
    e = e || window.event;
    var form = e.target || e.srcElement;

    form.onsubmit = function() {
        return false;
    };
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.