如何防止按钮重复提交的一个实践

有时候,我们某个按钮处理的工作量很大,耗时很久,可能引发用户的误解,以为程序未响应,结果再次提交,可能导致处理逻辑执行到一半,又再次执行。

那我们有什么办法可以做到不让用户重复点击,又能给予友好的操作等待提示呢?下面是一个小小实践。

效果图:

 

前台代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>如何防止按钮重复提交的一个实践</title>
     <script type="text/javascript">   
        var IsClickSumbit = false;//全局变量
        function CheckIsClickSumbit(BtnSumbit)
        {
           if(IsClickSumbit)//拦截重复点击(页面在刷新前,全局变量的值是一个静态变量)
           {
               return false;
           }
           else
           {
              document.getElementById(BtnSumbit).disabled= true;//提交按钮变灰
              document.getElementById("divImg").style.display ="block";
              document.getElementById("ImgLoadingAnimation").src="LoadingAnimation.gif"
              document.getElementById("BtnHideSumbit").click();//执行委托: protected void BtnSumbit_Click(object sender, EventArgs e)
  
              return true;
           }
          
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      
       <asp:button ID="BtnSumbit" runat="server" Text="提   交"  OnClientClick="javascript:CheckIsClickSumbit('BtnSumbit')" style="cursor:hand" OnClick="BtnSumbit_Click" />
       <div>
         <br/>
       </div>
       <div id="divImg" style="display :none">
         <img id="ImgLoadingAnimation" src="" alt="正在处理中..." />
         <asp:LinkButton ID="BtnHideSumbit" runat="server"  OnClick="BtnSumbit_Click" Text="" /><!--注意:Text为空!故在界面上是不可见的,但是又保证了BtnHideSumbit是确实存在的一个被委托的元素-->
       </div>
    </div>
   
   
    </form>
</body>
</html>

 

后台代码:
protected void BtnSumbit_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(5000);  //进度条运行5秒后然后消失,而且按钮恢复原状。
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值