重复触发就是防止用户重复点击提交数据了,我们一般都是点击之后没反应会再次点击了,这个不但要从用户体验上来做好,还在要js或java程序脚本上做好,让用户知道点击是己提交服务器正在处理,下面我就整理从脚本上来处理此重复触发的问题。

很多时候事件会被快速重复触发,比如 click,这样就会执行两次代码,造成很多后果。比如说添加表单时,连续多次点击会出现一下添加多个数据的情况。现在有比较多的解决方法,但几乎都有局限性,比如一个 Ajax 表单,如果防止用户一次点好多下可以在第一次点击的时候冻结提交按钮,直到允许再次点击的时候再放开。很多人都这样干,但在其他的情况就不是很有效了。

下面推荐一个不错的方法,首先丢一个函数进去。

var _timer = {};
function delay_till_last(id, fn, wait) {if (_timer[id]) {window.clearTimeout(_timer[id]);delete _timer[id];}return _timer[id] = window.setTimeout(function() {fn();delete _timer[id];}, wait);
}

使用方法:

$dom.on('click', function() {delay_till_last('id', function() {//注意 id 是唯一的//响应事件}, 300);
});

上面的代码可以让点击之后等待 300 毫秒,如果在 300 毫秒内又发生了这个事件则废除上一次点击,重新计时,反复如此,直到完全等待了 300 毫秒再响应事件。

 var _timer = {};
function delay_till_last(id, fn, wait) {if (_timer[id]) {window.clearTimeout(_timer[id]);delete _timer[id];}return _timer[id] = window.setTimeout(function() {fn();delete _timer[id];}, wait);
}function submitfrm(){delay_till_last('id', function() {//注意 id 是唯一的//响应事件submitform();}, 300);}function submitform(){$('#editfm').form('submit',{method:'post',url:'<%=path%>/BaseCostFieldController/insertBaseCostField.do',success: function(val){var data = eval('('+val+')');$('#editdg').dialog('close');if(data.result){$.messager.alert('消息',data.message);$('#dg').datagrid('reload');}else{$.messager.alert('警告',data.message);}}});}

jquery防止重复提交表单相关推荐

  1. jquery submit()不能提交表单的解决方法

    jquery submit()不能提交表单的解决方法 参考文章: (1)jquery submit()不能提交表单的解决方法 (2)https://www.cnblogs.com/war-hzl/p/ ...

  2. 【重复提交表单】表单重复提交的三种情况,解决办法

    引入 看一个重复提交表单的例子 F12可以看到,请求体中的参数在刷新页面之后仍然保留,因此每一次刷新页面,都会把现有的请求体中的表单数据提交一次到服务器,而接收的页面还是insert.jsp,于是造成 ...

  3. php js 防止重复提交表单,php如何防止form重复提交

    php如何防止form重复提交 引入cookie机制来解决(推荐学习:PHP编程从入门到精通) 用户提交表单到后端,在 Cookie 中做标记,指定时间内重复提交无效.但是用户禁用 Cookie 这个 ...

  4. php ajax 重复提交,ThinkPHP防止重复提交表单的方法实例分析

    本文实例总结分析了ThinkPHP防止重复提交表单的方法.分享给大家供大家参考,具体如下: 为什么会有表单重复的坑 在开发中,如果一个新增或修改的表单,在后台完成数据库操作后我们设定的不是跳转到其他页 ...

  5. php防止订单重复计算,php防止用户重复提交表单

    我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后的处理如修改或添加数据到数据库时就会惹上麻烦. 效果图: 那 ...

  6. java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

  7. 如何防止用户重复提交表单

    我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后的处理如修改或添加数据到数据库时就会惹上麻烦. 那么如何规避 ...

  8. html ajax提交表单实例,jQuery使用$.ajax提交表单完整实例

    本文实例讲述了jQuery使用$.ajax提交表单的方法.分享给大家供大家参考,具体如下: 首先,新建Login.html页面: /p> "http://www.w3.org/TR/x ...

  9. jQuery的ajax提交表单

    jQuery的ajax提交表单 1.表单 <form id="ff" method="post"><div class="input ...

最新文章

  1. kali2020安装中文输入法(切换中文输入法)
  2. 华中农业大学Kenichi Tsuda团队诚聘植物-微生物互作、生物信息学博士后二名
  3. python对象模型_[译] 用 Python 实现一个最简单的对象模型
  4. Amazon Alexa 新里程碑: 50000 个功能、 20000 种设备、 3500 个品牌
  5. [LOJ #521]「LibreOJ β Round #3」绯色 IOI(抵达)(结论)
  6. [css] OOCSS有哪些好处?对应的库有哪些?
  7. 广义典型相关分析_重复测量数据分析及结果详解(之二)——广义估计方程
  8. 数据类型转换规则C语言
  9. 解释stateless worker
  10. docker登录mysql数据库_从docker容器连接到远程MySQL数据库
  11. mysqld --initialize --console 没有 打印信息_JavaScript学习笔记(三)-- 循环结构
  12. mysql查询最接近的记录
  13. 杨力祥老师《高级Windows程序设计》课程短评
  14. 【工作笔记】将GIF拆解成序列帧给video_image控件使用
  15. c++ 二次开发 良田高拍仪_捷易拍sdk开发指南(高拍仪、文件拍摄仪二次开发软件)...
  16. 【实战】还记得校内网么(人人网)?当年的同学都在哪?爬取一下就知道
  17. index.highlight.max_analyzed_offset
  18. dp怎么接显示器和主机_怎样设置显示器DP接口信号优先?
  19. 问题 F: 小明与隔壁老王之间不得不说的故事
  20. 学法医的写代码,学刑侦的做运营……原来阿里人读过那些奇葩专业!

热门文章

  1. RTX 报错(应用SDK服务器:超出支持的最大应用数目)解决办法
  2. 养颜有妙--招-喝水可祛痘、退烧、养胃、助眠
  3. 寒冬咳嗽不妨试试中医小偏方
  4. 【工具mdnice】Markdown在线工具-支持知乎、微信排版
  5. 高新技术企业认定全攻略
  6. 易语言linux静态编译失败,易语言静态编译出现错误求解决
  7. 高频DCDC电源减小EMI的布局技巧
  8. 《苏宁易购:商品详情系统架构设计》读后感
  9. Android屏幕共享及远程控制【免root】
  10. node_modules\fibers\bin\win32-x64-83\fibers.node` is missing 报错解决方案