【问题标题】:Prevent double clicking asp.net button ASP.NET C#防止双击 asp.net 按钮 ASP.NET C#
【发布时间】:2017-05-31 16:47:28
【问题描述】:

如何防止用户双击按钮?我一直在搜索互联网,但在我的项目中没有什么对我有用。 可以举个例子吗?

我有这个但不工作

 <script type = "text/javascript">
 function DisableButton() {
  document.getElementById("<%=Button1.ClientID %>").disabled = true;
 }
  window.onbeforeunload = DisableButton;
 </script>

【问题讨论】:

标签: c# asp.net button


【解决方案1】:

您可以在按钮的单击事件中将“启用”属性更改为 false。

例如:

关于c#代码:

protected void Button1_Click(object sender, EventArgs e)
{
    Button1.Enabled = false;
}

在 aspx 文件上:

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

【讨论】:

  • 这不会总是阻止双击,除非服务器端代码在有人有机会再次单击之前非常快。这是依靠服务器禁用按钮。
  • 如果他在客户端这样做,服务器端将不会记住第二次发布后的状态。可以在会话中存储一个变量,但我认为这是一种矫枉过正,在回发之前单击一次或多次都没关系,因为事件将以任何方式执行一次。执行后,您将无法再次执行相同的任务。
  • 您当然可以在回发之前执行两次。这就是我要说的。在到达Button1.Enabled = false 之前有一个长时间运行的进程,它将运行代码两次。这个当前的例子大部分时间都可以工作,因为几乎没有任何事情发生。
  • 如果他想在方法回发并将数据返回给用户之后阻止按钮单击,那么除了 javascript 解决方案之外,他还需要您的答案,因此如果 Marth 需要,这个答案仍然有效.
  • 如果您想将 cookie 带入其中,那就太过分了。你所拥有的加上下面的 Javascript 解决方案应该没问题,除非他或她的要求不是我们认为的那样。
【解决方案2】:

试试这个

<asp:Button OnClientClick="disableClick(this)" OnClick="MyButtonOnClick" runat="server" UseSubmitBehavior="false" ID="MyButton" />

<script type="text/javascript">
    function disableClick(elem) {
        elem.disabled = true;
    }
</script>

您挂钩OnClientClick 事件并将按钮传递给disableClick 函数,然后将按钮设置为禁用,因此无法再次单击它。

【讨论】:

  • 我需要从按钮的asp标签中删除OnClick,因为我看到你没有那个事件,我理解它只是添加OnClientClick,如果我只添加那个按钮,它会不发送另一个表格,简而言之,按钮不会做任何事情吗?这发生在我的项目中
  • 您仍然可以使用 OnClick 事件,因为按钮最初需要回发。我不知道您是如何使用按钮的,因为我没有看到发布的按钮代码,但您可能需要执行我刚刚编辑的代码才能使其有效工作。等一下。
  • 此解决方案通常不起作用。 "elem.disabled" 立即取消当前回发 - 除非您更改提交行为。见stackoverflow.com/a/21996413/2534462
【解决方案3】:

其他答案都没有真正帮助我,但在应用来自 Junior Porfirio 在 cmets 下共享的链接 (http://tgynther.blogspot.com.br/2011/07/aspnet-prevent-button-double-click.html) 中的代码时,最终给了我正在寻找的解决方案。

Button1.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(Button1, null) + ";");

我在 Page_Load 方法中添加了上述代码,它似乎可以正常工作。该按钮被禁用,回发仍然发生。

【讨论】:

  • 请使用正确的格式,在Button1前放四个空格,并去掉反引号:`
  • 完成。谢谢史蒂夫费斯特。
  • 响应后如何启用按钮?
猜你喜欢
  • 2014-10-01
  • 2011-07-08
  • 2011-09-11
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 2018-06-14
  • 2014-03-26
  • 2015-10-17
相关资源
最近更新 更多