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 Ajax实现下拉框无刷新联动
Dec 06 jQuery
jQuery EasyUI 选项卡面板tabs的使用实例讲解
Dec 25 jQuery
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
详解jQuery-each()方法
Mar 13 jQuery
jquery简单实现纵向的无缝滚动代码实例
Apr 01 jQuery
jquery实现下载图片功能
Jul 18 jQuery
jQuery 实现扁平式小清新导航
Jul 07 jQuery
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
jQuery中getJSON跨域原理的深入讲解
Sep 02 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入门速成教程
2007/03/19 PHP
php变量作用域的深入解析
2013/06/03 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php字符串操作常见问题小结
2016/10/11 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
实例详解Python模块decimal
2019/06/26 Python
pytorch打印网络结构的实例
2019/08/19 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
python 伯努利分布详解
2020/02/25 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
《满井游记》教学反思
2014/02/26 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
2015年维修电工工作总结
2015/04/25 职场文书