Disable button after first click

  • Thread starter Thread starter Sinity
  • Start date Start date
S

Sinity

Anyone knows the method/codes to disable the clicked button after first
click by using .aspx-- to prevent people to click many time when waiting for
the server response.

I tried to do this by adding a java script for the button. But, useless..

Please help! Thank you
 
Using Javascript(Client side
You can add a javascript onclick handler in the .cs file as unde

string x = "document.Form1.Button1.disabled=true"
this.Button1.Attributes.Add("onclick",x)

To do the same on the server side

add the following to your button click event handler { i.e the function --private void Button1_Click(object sender, System.EventArgs e)
this.Button1.Enabled=false
 
Sinity,

I'm just about to post the code to do this on my website, but here you go:

It stops the submit, but even better it calls some of the same .Net client
side code and doesn't disable the button if any required field validators
aren't valid and the page doesn't actually submit.

<script language="javascript">
<!--
var submitcount=0;

function disableSubmit()
{
if (typeof(Page_ClientValidate)=='function')
{
if (Page_ClientValidate() == true)
{
return checkSubmit();
}
else
{
return true;
}
}
else
{
return checkSubmit();
}
}

function checkSubmit()
{
if (submitcount == 0)
{
submitcount++; return true;
}
else
{
alert('This form has already been submitted.'); return false;
}
}
//-->
</script>

Attach it to your button like so:

SubmitButton.Attributes.Add("onClick", "javascript: return
disableSubmit();")


Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
 
As the server response is slow something because of the network traffic,
users click again and again.

how can I manage this problem in aspx level?

I am using VB.NET as the devevelopment tool
 
Homa,

Now I've confused myself! Yes, it has to be "return true;".

This is because the submit button's click event fires off two different
asp.net javascripts. One is the javascript I'm tying into:
Page_ClientValidate, the other is a javascript that checks the required
field validators.

At the point in question inside of my javascript if the Button doesn't get
clicked (which is what "return false;" would cause then any validators on
the page wouldn't get displayed properly.

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
 
You could try using an if/then that checks a session variable to see if it's
set to true. Then inside of the if/then set the session variable to be
false. That way if the form is submitted a second time the code inside the
if/then won't be run a second time...

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
 
This is very basic ASP.NET stuff:

If IsPostBack Then
button.enabled = false
End If

The ability to determine if a form is being submitted for the first time is
already built into the ASP.NET architecture.
 
Scott,

Maybe I misunderstood sinity, but I thought the problem was keeping the user
from clicking the submit button a second time before the postback to the
server was complete.

If that happens (say when a user is submitting an order for processing) they
would end up with two orders. It wouldn't matter if you disable the button
from server side code like in the example you gave because back on the
client the button would still be enabled until the round trip of the post
back is completed. Sinity says that the server process takes a long time
which means that the client has plenty of time to try clicking submit again.

The javascript I supplied disables the button client side, but only if the
client has javascript. I think Sinity is asking for a way to keep a second
submit from processing if it does escape the javascript. I only know of two
ways to do that. One is to use a session variable like I suggested. The
other would only work if information is being databased. As long as the
database has a timestamp, the information being entered could be checked
against existing entries to see if there is an entry that contains identical
info. And if an identical entry is found, check its timestamp and stop the
processing if the timestamps are, say, up to only 30 seconds apart.

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
 
Back
Top