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插件制作 自增长输入框实现代码
Aug 17 jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
jQuery事件对象的属性和方法详解
Sep 09 jQuery
JS文件中加载jquery.js的实例代码
May 05 jQuery
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
Dec 06 jQuery
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
Sep 10 jQuery
Jquery Datatables的使用详解
Jan 30 jQuery
jQuery实现简单评论区功能
Oct 26 jQuery
Jquery+javascript实现支付网页数字键盘
Dec 21 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详细彻底学习Smarty
2008/03/27 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python File readlines() 使用方法
2018/03/19 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
车队司机个人自我鉴定
2014/04/17 职场文书
兽医医药专业求职信
2014/07/27 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
初中毕业生自我评价
2015/03/02 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书