单击后禁用asp.net按钮以防止双击

Gou*_*ham 44 javascript asp.net jquery asp.net-ajax

我有一个ASP.NET按钮,我需要在用户单击它后禁用它以防止双击.提交完成后,必须再次启用它.谁能帮我这个?

小智 36

这是一个适用于asp.net按钮对象的解决方案.在前端,将这些属性添加到您的asp:Button定义:

<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
Run Code Online (Sandbox Code Playgroud)

在后端,在click事件处理程序方法调用中,将此代码添加到末尾(最好在finally块中)

myButton.Enabled = true;
Run Code Online (Sandbox Code Playgroud)


小智 31

我找到了这个,它有效:

btnSave.Attributes.Add(
    "onclick", 
    "this.disabled = true;" + ClientScript.GetPostBackEventReference(btnSave, null) + ";");
Run Code Online (Sandbox Code Playgroud)

  • 什么是clientScript? (3认同)

小智 15

检查此链接,这是最简单的方法,它不会禁用验证.

http://aspsnippets.com/Articles/Disable-Button-before-Page-PostBack-in-ASP.Net.aspx

如果你有例如

  <form id="form1" runat="server">
      <asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Clicked" />
  </form>
Run Code Online (Sandbox Code Playgroud)

然后你可以使用

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

要禁用按钮,如果验证成功,就像在页面做一个服务器回传.


Sha*_*eon 9

如果你想防止由于响应缓慢的服务器端代码双击,那么这工作正常:

<asp:Button ... OnClientClick="this.disabled=true;" UseSubmitBehavior="false" />
Run Code Online (Sandbox Code Playgroud)

尝试在服务器上的_Click()事件上放置Threading.Thread.Sleep(5000),您将看到该按钮在服务器处理click事件时被禁用.

无需服务器端代码重新启用按钮!

  • 这完美地工作。只是想强调对`UseSubmitBehavior="false"` 的需求,否则,您的按钮点击将不会在代码隐藏中触发。 (2认同)

eqi*_*qiz 8

如果有人关心我最初发现了这篇文章,但我在页面上使用了 ASP.NET 的内置验证。解决方案有效,但即使经过验证也要禁用该按钮。您可以使用以下代码来使其仅在通过页面验证时禁用该按钮。

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" OnClientClick=" if ( Page_ClientValidate() ) { this.value='Submitting..'; this.disabled=true; }" UseSubmitBehavior="false" />
Run Code Online (Sandbox Code Playgroud)


小智 6

只需要为 asp 按钮添加 2 个属性:

OnClientClick="this.disabled='true';"  UseSubmitBehavior="false"
Run Code Online (Sandbox Code Playgroud)

例如

<asp:Button ID="Button1" runat="server" Text="TEST" OnClientClick="this.disabled='true';"  UseSubmitBehavior="false" CssClass="button-content btnwidth" OnClick="ServerSideMethod_Click"  />
Run Code Online (Sandbox Code Playgroud)

更多细节:

https://bytes.com/topic/asp-net/answers/918280-disable-button-click-prevent-multiple-postbacks


Res*_*hma 5

<asp:Button ID="btnSend" runat="server" Text="Submit"  OnClick="Button_Click"/>
Run Code Online (Sandbox Code Playgroud)
        <script type = "text/javascript">
            function DisableButton()
            {
                document.getElementById("<%=btnSend.ClientID %>").disabled = true;
            }
            window.onbeforeunload = DisableButton;
        </script>
Run Code Online (Sandbox Code Playgroud)


ste*_*erg 0

您可以使用 JavaScript 来完成此操作。在你的form标签中,onsubmit="javascript:this.getElementById("submitButton").disabled='true';"