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插件imgAreaSelect基础讲解
May 26 jQuery
jquery dataTable 后台加载数据并分页实例代码
Jun 07 jQuery
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
jQuery使用动画队列自定义动画操作示例
Jun 16 jQuery
jQuery pagination分页示例详解
Oct 23 jQuery
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
jQuery实现的别踩白块小游戏完整示例
Jan 07 jQuery
jQuery实现获取多选框的值示例
Feb 07 jQuery
jQuery实现简单全选框
Sep 13 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
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
Python lxml模块安装教程
2015/06/02 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python re模块findall()函数实例解析
2018/01/19 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
Python 切分数组实例解析
2019/11/07 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
Python实现图像的垂直投影示例
2020/01/17 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
《秋姑娘的信》教学反思
2014/02/28 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
房屋租赁协议书
2014/10/18 职场文书
北京故宫的导游词
2015/01/31 职场文书
房产电话营销开场白
2015/05/29 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python