点击后立即禁用按钮

4

我希望在单击按钮后立即禁用它,这样用户就无法在短时间内再次单击它并触发两次OnClick_Event。 btn.Enabled = false 似乎不能立即解决问题。有没有其他方法可以实现这一点?

谢谢,

Dennis

7个回答

6
你所做的是在post back之后禁用它,因此当浏览器接收到响应并呈现页面时,你的按钮将被禁用。
最好使用JavaScript在客户端完成此操作。
var button = document.getElementById('yourButton');
button.disabled = true;

如果您在向服务器提交数据时遇到问题,请查看此文章:如何在单击ASP.NET按钮时禁用它


我担心这会是一个答案,那么我应该如何调用OnClick方法呢?因为这似乎会覆盖服务器端的OnClick。 - Dennis Röttger
请查看此链接:http://weblogs.asp.net/jeffwids/archive/2009/10/06/how-to-disable-an-asp-net-button-when-clicked.aspx - Andreas Grech
这里只是有点追求精确,其实并不存在“Serverside-OnClick”这样的东西。ASP.NET 会为您生成一些 JavaScript,将其挂钩到您的<input>按钮上,使其提交 ASP.NET 使用的单个<form>到服务器,并确保将所有表单数据发送到POST数据中。 - Andreas Grech
1
是的,就是那样。除此之外,由于您的回答,您可能会或可能不会成为我的个人英雄,谢谢! - Dennis Röttger
你因为你的回答可能成为或不成为我的个人英雄 -- 哈哈,为什么要模棱两可呢?我到底是还是不是? :p - Andreas Grech
是的,您是的,您的免费英雄奖章和礼品篮已经邮寄出去了! - Dennis Röttger

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:return Disable(this);"

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;
}

希望这可以帮到你 ;)

0
在按钮的OnClick事件的所有功能结束处编写btn.Enabled= false。它将执行所需的操作。

很遗憾,是的,在这种情况下我仍然能够点击5-7次。 - Dennis Röttger
不,这正是OP所说的他做过的事情,但由于这是在服务器端而不是客户端上完成的,所以对他没有起作用。 - Andreas Grech

0
禁用按钮引起了一个问题。您无法触发服务器端事件。所以最好的方式是隐藏按钮(同时显示一些友好的错误消息“正在工作”,“处理中”等)。研究如何在回发时禁用 asp.net 按钮会有所帮助。谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接