onclick防止重复提交

 1: <html xmlns="http://www.w3.org/1999/xhtml">
   2: <head runat="server">
   3:     <script type="text/javascript">
   4:         var date = new Array();
   5:         function disableButton(button, validateGroup)
   6:         {
   7:             date.push(new Date());
   8:             if (date.length > 1
   9:                 && (date[date.length - 1].getTime() - date[date.length - 2].getTime() < 1000))//小于1秒则认为重复提交
  10:             {
  11:                 event.cancelBubble = true; //测试时发现,如果直接单独设置cancelBubble、或者returnValue来取消事件,经常取消不了,依然存在重复提交的可能。因此只好用返回值来实现手工控制!
  12:                 return false;
  13:             }
  14:             if (typeof (Page_ClientValidate) == 'function'
  15:                 && ((validateGroup == undefined && Page_ClientValidate() == false) 
  16:                         || (validateGroup != undefined && Page_ClientValidate(validateGroup) == false)))
  17:             { //如果指定了ValidateGroup,则只验证改组;如果未指定,则验证全部验证控件
  18:                 return false;
  19:             }
  20:  
  21:             button.disabled = true;
  22:             return true;
  23:         }
  24:  
  25:         function doubleClick()
  26:         {
  27:             var button1 = document.getElementById('btnPostBack1');
  28:             button1.onclick();
  29:             button1.onclick();
  30:         }
  31:     </script>
  32: </head>
  33: <body>
  34:     <form id="form" runat="server">
  35:     <div>
  36:         <asp:TextBox runat="server" ID="tbxInput1"></asp:TextBox>
  37:         <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tbxInput1"
  38:             ValidationGroup="Group1" ErrorMessage="*"></asp:RequiredFieldValidator>
  39:         <asp:Button runat="server" ID="btnPostBack1" Text="按我1" UseSubmitBehavior="false"
  40:             ValidationGroup="Group1" OnClientClick="if(!disableButton(this, 'Group1')) return false;" OnClick="btnPostBack_Click">
  41:         </asp:Button>
  42:     </div>
  43:     <div>
  44:         <asp:TextBox runat="server" ID="tbxInput2"></asp:TextBox>
  45:         <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="tbxInput2"
  46:             ValidationGroup="Group2" ErrorMessage="*"></asp:RequiredFieldValidator>
  47:         <asp:Button runat="server" ID="btnPostBack2" Text="按我2" UseSubmitBehavior="false"
  48:             OnClientClick="if(!disableButton(this)) return false;" OnClick="btnPostBack_Click">
  49:         </asp:Button>
  50:     </div>
  51:     <input type="button" onclick="doubleClick();" value="点击一次,模拟连续点击'按我1'两次" />
  52:     </form>
  53: </body>
  54: </html>

猜你喜欢

转载自blog.csdn.net/lw670020705/article/details/82418646
今日推荐