Tags

,

Here is some handy code to show a conformation dialog box before user leave the page.

image

<script language="javascript" type="text/javascript">

    var isDirty;

    isDirty = 0;

    function setDirty() {

        isDirty = 1;

    }

    function goodbye(e) {

        if (isDirty == 1)

        {

            if(!e) e = window.event;

            //e.cancelBubble is supported by IE – this will kill the bubbling process.

            e.cancelBubble = true;

            e.returnValue = ‘Please make sure you have saved your Forecast prior to leaving this page?’; //This is displayed on the dialog

            //e.stopPropagation works in Firefox.

            if (e.stopPropagation) {

                e.stopPropagation();

                e.preventDefault();

            }

        }

}

window.onbeforeunload=goodbye;

</script>

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

This code basically cancels the page exit action. The browser intercepts the attempt to cancel the page exit. I don’t think this is in the JavaScript specifications – but its still a good thing. Otherwise, spammers can make it very hard for people to leave their page. Another reason why its a good thing is because its implemented in both IE and Firefox in a very similar way. So you don’t need any coding gymnastics to use this feature.

and in the codebehind, add the triggers to the input fields as well as resets on the submission/cancel buttons….

btnSubmit.Attributes.Add("onclick", "isDirty = 0;");
btnCancel.Attributes.Add("onclick", "isDirty = 0;");
txtName.Attributes.Add("onchange", "setDirty();");
txtAddress.Attributes.Add("onchange", "setDirty();");
or you can loop through the whole page by reading this blog

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Advertisements