防止双击asp.net按钮

Whi*_*der 20 asp.net button

我意识到这个问题已经被问到,但没有一个答案适用于我的项目.

我有一个按钮,当点击时调用API,因此有1秒的延迟.

我尝试过几件事情都没有用.

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

即使这样做也没有.

小智 27

防止双击.请在您的aspx页面中添加以下代码.

<script type="text/javascript" language="javascript">

   Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
   function BeginRequestHandler(sender, args) { var oControl = args.get_postBackElement(); oControl.disabled = true; }

</script>
Run Code Online (Sandbox Code Playgroud)

  • 这100%工作,我真的很感激. (3认同)
  • 迄今为止的最佳解决方案:-) (3认同)
  • 你能解释一下这是怎么回事吗?这怎么连接到'btnSave`? (2认同)
  • 不起作用 我收到“错误:'Sys'未定义” ...我到底需要在aspx页面中添加此脚本的位置? (2认同)
  • @nu everest:按钮的禁用必须在客户端(javascript)上完成,因为服务器端的禁用速度不够快。用户可以在服务器端代码禁用该按钮之前几次单击该按钮。(“ get_postBackElement”-获取启动异步回发的回发元素。) (2认同)

Ant*_*y D 21

该解决方案简单有效.在您的按钮上包含以下代码:

OnClientClick="return CheckDouble();"
Run Code Online (Sandbox Code Playgroud)

无论你想要什么,你的JavaScript - 例如在你的页面底部:

<script type="text/javascript">
   var submit = 0;
   function CheckDouble() {
     if (++submit > 1) {
     alert('This sometimes takes a few seconds - please be patient.');
     return false;
   }
 }
 </script>
Run Code Online (Sandbox Code Playgroud)


Dan*_* H. 6

上述大部分建议对我来说都不起作用。tezzo 所做的工作如下:

Me.btnSave.Attributes.Add("onclick", "this.disabled=true;")
Me.btnSave.UseSubmitBehavior = False
Run Code Online (Sandbox Code Playgroud)

更简单的是,不要在代码隐藏中使用上面的内容,只需使用以下内容:

   <asp:Button ID="btnSave" runat="server" Text="Save" 
      UseSubmitBehavior="false"
      OnClientClick="this.disabled='true';" 
   </asp:button>
Run Code Online (Sandbox Code Playgroud)

UseSubmitBehavior="false"是关键。


tez*_*zzo 5

您可以使用以下代码防止双击:

Me.btnSave.Attributes.Add("onclick", "this.disabled=true;")
Me.btnSave.UseSubmitBehavior = False
Run Code Online (Sandbox Code Playgroud)

这样你就可以用来btnSave_Click调用你的API了。

通常我的: 设置Validators中有很多,如果验证失败,我可以运行此代码来重新启用保存按钮。PageValidator.SetFocusOnError = True

Me.YourControl.Attributes.Add("onfocus", Me.btnSave.ClientID & ".removeAttribute('disabled');")
Run Code Online (Sandbox Code Playgroud)