jQuery 防止相同的事件快速重复触发方法


Posted in jQuery onFebruary 08, 2018

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

很多时候事件会被快速重复触发,比如 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 毫秒再响应事件。

这个函数很有用的,比如验证输入或者根据输入的邮箱实时拉去头像而不用等到必须失焦再拉取。

例子

按钮BUTTON类

a标签类

对于第一类情况,button有一个属性是disabled控制其是否可以点击,看代码

<input type="button" value="Click" id="subBtn"/> 
<script type="text/javascript"> 
function myFunc(){ 
 //code 
 //执行某段代码后可选择移除disabled属性,让button可以再次被点击 
 $("#subBtn").removeAttr("disabled"); 
} 
$("#subBtn").click(function(){ 
 //让button无法再次点击 
 $(this).attr("disabled","disabled"); 
 //执行其它代码,比如提交事件等 
 myFunc(); 
}); 
</script>

以上这篇jQuery 防止相同的事件快速重复触发方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery轻松实现无缝轮播效果
Mar 22 jQuery
jquery将标签元素的高设为屏幕的百分比
Apr 19 jQuery
jQuery正则验证注册页面经典实例
Jun 10 jQuery
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
jquery写出PC端轮播图实例
Jan 26 jQuery
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
Jan 18 jQuery
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
jquery将json转为数据字典的实例代码
Oct 11 jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
jQuery--遍历操作实例小结【后代、同胞及过滤】
May 22 jQuery
jQuery实现动态显示select下拉列表数据的方法
Feb 05 #jQuery
jQuery Dom元素操作技巧
Feb 04 #jQuery
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 #jQuery
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 #jQuery
jquery.picsign图片标注组件实例详解
Feb 02 #jQuery
jquery应用实例分享_实现手风琴特效
Feb 01 #jQuery
jQuery NProgress.js加载进度插件的简单使用方法
Jan 31 #jQuery
You might like
PHP 编写的 25个游戏脚本
2009/05/11 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php查询whois信息的方法
2015/06/08 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
详解Javascript动态操作CSS
2014/12/08 Javascript
angular2使用简单介绍
2016/03/01 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
python如何将图片转换素描画
2020/09/08 Python
英语文学专业学生的自我评价
2013/10/31 职场文书
日语专业毕业生求职信
2013/12/04 职场文书
服装创业计划书范文
2014/02/05 职场文书
校本教研活动总结
2014/07/01 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
三八妇女节主持词
2015/07/04 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python