由于网速问题,用户总是迫不及待的多次点击提交按钮,从而造成多次提交。以下通过自定义Button控件,来解决此问题。

原理:点击按钮后,通过设置其disabled属性为true来达到目的。

自定义Button控件核心代码

protected override void AddAttributesToRender(HtmlTextWriter writer)
{System.Text.StringBuilder ClientSideEventReference = new System.Text.StringBuilder();//是否实现页面验证if (((this.Page != null) && this.CausesValidation) && (this.Page.Validators.Count > 0)){ClientSideEventReference.Append("if (typeof(Page_ClientValidate) == 'function'){if (Page_ClientValidate() == false){return false;}}");}//是否提示提交if (this.ShowMessageBox){ClientSideEventReference.Append("if (!confirm('" + this.WarningText + "')){return false}");}//是否使用Button的OnClientClick属性进行js验证if (this.OnClientClick != ""){ClientSideEventReference.Append("if(!"+ OnClientClick +") { return false;}");}ClientSideEventReference.AppendFormat("this.value = '{0}';", (string)this.ViewState["afterSubmitText"]);ClientSideEventReference.Append("this.disabled = true;");ClientSideEventReference.Append(this.Page.ClientScript.GetPostBackEventReference(this, string.Empty));writer.AddAttribute(HtmlTextWriterAttribute.Onclick, ClientSideEventReference.ToString(), true);            base.AddAttributesToRender(writer);
}

使用自定义Button范例核心代码

<script type="text/javascript">function Validate(){var txt = document.getElementById('<%=txtContext.ClientID %>');if(txt.value == ""){alert('文本框不能为空!');txt.focus();return false;}return true;}
</script>
<cc1:ClickOnceButton ID="btnAdd" runat="server" Text="提交" OnClick="btnAdd_Click" OnClientClick="Validate()" />

注意事项:如果通过设置OnClientClick属性来进行验证时,OnClientClick属性所对应的属性值即:js函数不能带符号“;”
 Example:错误写法: OnClientClick="Validate();"  正确写法: OnClientClick="Validate()"

 美中不足:查看页面源码是发现有两个onclick事件(如下),OnClientClick属性对应的onclick事件没有起到作用。望路过高手提出解决意见!

<input οnclick="if(!Validate()) { return false;}this.value = '正在提交,请稍候...';this.disabled = true;__doPostBack('btnAdd','')" type="submit" name="btnAdd" value="提交" οnclick="Validate();" id="btnAdd" />

源码下载

转载于:https://www.cnblogs.com/chengxiaoming/archive/2010/07/01/1769033.html

自定义Button防止重复提交相关推荐

  1. 如何防止表单重复提交(后端)

    1.背景与介绍: 平时开发的项目中可能会出现下面这些情况: 由于用户误操作,多次点击表单提交按钮. 由于网速等原因造成页面卡顿,用户重复刷新提交页面. 黑客或恶意用户使用postman等工具重复恶意提 ...

  2. 防止表单重复提交方法

    1.背景与介绍: 平时开发的项目中可能会出现下面这些情况: 由于用户误操作,多次点击表单提交按钮. 由于网速等原因造成页面卡顿,用户重复刷新提交页面. 黑客或恶意用户使用postman等工具重复恶意提 ...

  3. 防止表单重复提交的4种方法

    1.背景与介绍: 平时开发的项目中可能会出现下面这些情况: 由于用户误操作,多次点击表单提交按钮. 由于网速等原因造成页面卡顿,用户重复刷新提交页面. 黑客或恶意用户使用postman等工具重复恶意提 ...

  4. 防止表单重复提交几种方法+实测

    1.前端处理(场景:用于网络延迟情况下用户点击多次submit按钮导致表单重复提交) ①:通过一个标识来控制表单提交之后,再次提交会直接返回处理. Var isCommitted = false; / ...

  5. 自定义jsp标签来防止表单的重复提交

    在之前的工作和学习中总是会遇到表单重复提交的问题,使用了网上的各种解决方法 js,禁用提交按钮,阻止用户后退等操作,但是效果总有一些欠缺.在这里参考了某位老师的意见,决定使用session和自定义表单 ...

  6. SpringBoot自定义注解+AOP+redis实现防接口幂等性重复提交,从概念到实战

    一.前言 在面试中,经常会有一道经典面试题,那就是:怎么防止接口重复提交? 小编也是背过的,好几种方式,但是一直没有实战过,做多了管理系统,发现这个事情真的没有过多的重视. 最近在测试过程中,发现了多 ...

  7. AOP+自定义注解token令牌和参数防重复提交实战

    目录 一.哪些因素会引起重复提交? 二.重复提交会带来哪些问题? 三.订单的防重复提交你能想到几种方案? 四.自定义注解方式 4.1Java核心知识-自定义注解(先了解下什么是自定义注解) 4.1.1 ...

  8. 大聪明教你学Java | Spring Boot 使用自定义注解实现防止表单重复提交

    前言 表单重复提交是在多用户的 Web 应用中最常见且带来麻烦最多的一个问题.有很多的应用场景都会遇到表单重复提交问题,比如由于用户误操作,多次点击表单提交按钮:由于网速等原因造成页面卡顿,用户重复刷 ...

  9. SpringBoot 自定义注解+AOP+Redis 防止接口重复提交表单数据

    SpringBoot结合Redis处理重复提交 数据重复提交导致多次请求服务.入库,产生脏数据.冗余数据等情况.禁止重复提交使我们保证数据准确性及安全性的必要操作. 实际上,造成这种情况的场景不少: ...

最新文章

  1. 使用这样的方法代替注意力机制
  2. Zabbix Python API 应用实战
  3. 脑与认知科学3 脑神经影像下
  4. CV算法助理 | 华为外包招聘
  5. JVM学习(1)——通过实例总结Java虚拟机的运行机制(转)
  6. 蓝桥杯 ADV-18 算法提高 实数相加
  7. Linux Web基础
  8. C#几种截取字符串的方法(split 、Substring、Replace、remove)
  9. 蚂蚁课堂视频笔记思维导图-4期 三、消息中间件
  10. OJ 1038 宋小胖买切糕
  11. 创建型模式 - 单例模式Singleton
  12. Xcode No account for team . Add a new account in the Accounts preference pane or verify that your
  13. Exp6 信息搜集与漏洞扫描 20164302 王一帆
  14. 微型计算机机箱配什么显卡,CPU显卡搭配建议
  15. spring cloud 总结(摘抄版)
  16. 两两相望计算机音乐,两两相望 苏汐洋 两两相望歌曲,两两相望mp3在线试听 - 5nd音乐网...
  17. 字体图标库(Font Awesome)的使用--绝佳的图标字体库和CSS框架
  18. 知名大咖、一线品牌齐聚!机智云助力电动车锂电新时代!
  19. tpx色卡电子版_潘通色卡电子版下载
  20. 太极图python自定义函数绘制_python画太极图

热门文章

  1. matlab 某些函数
  2. ALL ABOUT CIRCUITS 的资源整理
  3. 解决Adobe Reader安装错误150120
  4. ISE与Modelsim联合仿真关联设置
  5. 当我们输入一条SQL查询语句时,发生了什么?
  6. MVC界面开发包Essential Studio for ASP.NET MVC发布2017 v3丨附下载
  7. 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...
  8. 图像热点(图像地图)
  9. 深入理解计算机系统(3)
  10. 【原创】单片系统SoC