2011-05-03 116 views
4

我想在点击按钮后立即禁用按钮,因此用户无法连续两次单击并连续触发两次OnClick_Event。 btn.Enabled = false似乎并没有立即做到这一点。有没有其他方法可以实现这一点?立即禁用点击按钮

感谢,

丹尼斯

回答

6

你在做什么回来因此您的按钮将在当浏览器接收的答复中说呈现的页面被禁用后后禁用它。

做它在客户端使用JavaScript来代替:

var button = document.getElementById('yourButton'); 
button.disabled = true; 

如果你使用回发到服务器,查看这篇文章面临的问题:How to disable an ASP.NET button when clicked

+0

我怕this'd一个答案,我究竟是如何调用OnClick方法则因为这似乎覆盖了Serverside-的OnClick。 – 2011-05-03 10:19:27

+0

看看这个:http://weblogs.asp.net/jeffwids/archive/2009/10/06/how-to-disable-an-asp-net-button-when-clicked.aspx – 2011-05-03 10:20:46

+0

只是在这里迂腐,但没有“Serverside-OnClick”这样的东西。 ASP.NET正在为您生成一些JavaScript,它会挂钩到您的按钮,这会使ASP.NET向服务器提交单一的

,确保发送POST数据中的所有表单数据。 – 2011-05-03 10:24:10

0

在按钮的Onclick事件中的所有功能的末尾写入btn.Enabled= false。它将执行Required操作。

+0

不幸的是,不,我仍然能够在发生这种情况之前至少点击它5-7次。 – 2011-05-03 10:21:56

+0

不,这正是OP说的他做的,而且这对他不起作用,因为这是在服务器端而不是客户端完成的。 – 2011-05-03 11:15:54

3
function disable() 
{ 
var button = document.getElementById('<%= Button1.ClientID %>'); 
button.disabled = true; 
} 

<asp:Button ID="Button1" OnClientClick="disable();"> 
3

你可以通过JavaScript

function Disable(btn) 
{ 
btn.disabled = true; 
} 

实现这一点,并添加到您的按钮的OnClientClick = “JavaScript的:返回禁止(本);”

0

禁用按钮引发了问题。你不会得到服务器端事件。所以最好通过隐藏按钮寻找替代方案(并且是显示一些友好的错误消息'正在工作','处理'等)。关于如何disable asp.net button on postback的工作将有所帮助。谢谢。

2

你可以简单地通过这个代码来处理它。假设,这里是一个名为btnAdd的按钮。当你点击这个按钮时,它将被禁用,因为它执行了相应的代码。我的意思是由于回发它将被禁用。

if (!IsPostBack) 
    { 
    btnAdd.Attributes.Add("onclick", "this.disabled=true;" + GetPostBackEventReference(btnAdd).ToString()); 
    } 
0
YourButton.Enabled = false; 

if(!YourButton.Enabled) 
{ 
\\Your Code Here 
YourButton.Enabled = true; 
} 

希望这有助于;)