代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Asp.NET
】
防止按钮多次提交的办法
作者:
/ 发布于
2016/9/1
/
470
//方法一:必需要是Asp.net服务器控件。(注意UseSubmitBehavior属性) <asp:Button ID="btnSumbit" runat="server" UseSubmitBehavior="false" OnClientClick="this.value='正在提交';this.disabled=true; " Text="提交" OnClick="btnSumbit_Click" /> 注意:1. UseSubmitBehavior="false" 需要设置成false 2. Button不能有ValidationGroup属性,否则,postback到服务器端,将不会触发button的服务器端事件 //方法二 当遇上Validator控件 <script type="text/javascript"> function disableButton(button) { if (typeof (Page_ClientValidate) == 'function' && Page_ClientValidate() == false) { return false; } button.disabled = true; return true; } </script> <div> <asp:TextBox runat="server" ID="tbxInput1"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tbxInput1" ValidationGroup="Group1" ErrorMessage="*"></asp:RequiredFieldValidator> <asp:Button runat="server" ID="btnPostBack1" Text="按我1" UseSubmitBehavior="false" OnClientClick="disableButton(this);" OnClick="btnPostBack_Click"> </asp:Button> </div> //方法三 protected void Page_Load(object sender, EventArgs e) { //.net1.1 Button1.Attributes.Add("onclick", "this.disabled=true;" + this.GetPostBackEventReference(this.Button1)); //.net 2.0以上 Button1.Attributes.Add("onclick", "this.disabled=true;" + this.ClientScript.GetPostBackEventReference(Button1, "")); } //终极绝杀技 <script type="text/javascript"> var date = new Array(); function disableButton(button, validateGroup) { date.push(new Date()); if (date.length > 1 && (date[date.length - 1].getTime() - date[date.length - 2].getTime() < 1000))//小于1秒则认为重复提交 { event.cancelBubble = true; //测试时发现,如果直接单独设置cancelBubble、或者returnValue来取消事件,经常取消不了,依然存在重复提交的可能。因此只好用返回值来实现手工控制! return false; } if (typeof (Page_ClientValidate) == 'function' && ((validateGroup == undefined && Page_ClientValidate() == false) || (validateGroup != undefined && Page_ClientValidate(validateGroup) == false))) { //如果指定了ValidateGroup,则只验证改组;如果未指定,则验证全部验证控件 return false; } button.disabled = true; return true; } </script> <asp:Button runat="server" ID="btnPostBack1" Text="按我1" UseSubmitBehavior="false" ValidationGroup="Group1" OnClientClick="if(!disableButton(this, 'Group1')) return false;" OnClick="btnPostBack_Click"> <asp:Button runat="server" ID="btnPostBack2" Text="按我2" UseSubmitBehavior="false" OnClientClick="if(!disableButton(this)) return false;" OnClick="btnPostBack_Click"> PS:disableButton接收一个validateGroup参数,如果指定了ValidateGroup,则只验证改组;如果未指定,则验证全部验证控件 /// 图片按钮ImageButton防止多次提交 由于ImageButton没有UseSubmitBehavior的属性,所以 function Submit(source) { Page_ClientValidate(); if (Page_IsValid) { source.disabled = true; __doPostBack(source.name, ''); } return Page_IsValid; } <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Source/images/btsend.jpg" OnClick="ImageButton1_Click" ToolTip="送出" OnClientClick="javascript:Submit(this);" />
试试其它关键字
同语言下
.
gzip压缩
.
实现http多线程断点续传下载文件
.
实现多线程断点续传下载大文件
.
生成字符串的 CheckSum
.
根据 UserAgent 获取浏览器的类型和版本
.
根据 Agent 判断是否是智能手机
.
隐藏手机号中间四位为*方法
.
合并图片(二维码和其他图片合并)
.
ASP.NET CORE中判断是否移动端打开网页
.
ASP.NET(C#)实现页面计时(定时)自动跳转
可能有用的
.
gzip压缩
.
实现http多线程断点续传下载文件
.
实现多线程断点续传下载大文件
.
生成字符串的 CheckSum
.
根据 UserAgent 获取浏览器的类型和版本
.
根据 Agent 判断是否是智能手机
.
隐藏手机号中间四位为*方法
.
合并图片(二维码和其他图片合并)
.
ASP.NET CORE中判断是否移动端打开网页
.
ASP.NET(C#)实现页面计时(定时)自动跳转
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3