Disabling and enabling a button during postback in asp.net

The trick is to use the OnClientClick and UseSubmitBehavior properties of the button control. There are other methods, involving code on the server-side to add attributes, but I think the simplicity of doing it this way is much more attractive:

<asp:Button runat="server" ID="BtnSubmit"
 OnClientClick="this.disabled = true; this.value = 'Submitting...';"
 Text="Submit Me!" /> 

OnClientClick allows you to add a client-side OnClick script. In this case, JavaScript will disable the button element and change its text value to a progress message. When the postback completes, the newly rendered page will revert the button back to its initial state without any additional work.

The one pitfall that comes with disabling a submit button on the client-side is that it will cancel the browser’s submit, and thus the postback. Setting the UseSubmitBehavior property to false tells .NET to inject the necessary client script to fire the postback anyway, instead of relying on the browser’s form submission behaviour. In this case, the code it injects would be:

__doPostBack(‘BtnSubmit’,’’) This is added to the end of our OnClientClick code, giving us this rendered HTML:

<input type="button" name="BtnSubmit"
 onclick="this.disabled = true; this.value = 'Submitting...';__doPostBack('BtnSubmit','')"
 value="Submit Me!" id="BtnSubmit" />
Next Post Previous Post
No Comment
Add Comment
comment url