onClick Event and Javascript Confirm() to Control Postback That Works in All Browsers (that I tested)

Ok, using an onClick event to call a function which uses a confirm() alert to control posting a form has been around for a long time.  Something similar to this:

<input name=’submit’ type=’submit’ value=’Delete’ onClick=’return confdel();’>

One bug that was plaguing us for some time and due to low usage/priority had not been addressed, was that on many of the forms when a user selected Cancel to halt the submit the form was still posting! It was only in Internet Explorer (IE) that showed this bug – Firefox would correctly halt the form.

Long overdue to be corrected and the fix seemed to be elusive. But after numerous Google searches and reading other posts about similar issues and possible solutions I pieced together a fairly straightforward fix that seems to work correctly in browser: FF 4.0, IE8/9, Chrome.  Code sample is just for a simple confirm true/false: 

/* confirm delete */
function confdelappt() { 
        var msg = "\nYou have requested to delete this thing. By deleting this thing you will actually delete it. Are you sure?\n";
        if (confirm(msg)){
            return true;
        }
        else{
                    if (window.event) { //will be true with IE, false with other browsers
                    window.event.returnValue=false; } //IE specific, seems to work
                else {
                    return false; } 
            }
        }
    }

I found (with the help of other posts) that setting “window.event.returnValue=false;” would get IE the recognize that the onClick= event had returned false to then halt processing of the form submit. You could also include similar code for the “true” case but even if IE doesn’t see that the return is “true” the form still submits. Its usually the “false” case that matters most.

Definitely needed is the check that (window.event) is something otherwise the “window.event.returnValue=false;” code will error in browsers like Firefox – when it errors your form most likely will continue processing.