实现 Vue 框架用户短时间内多次点击同一按钮仅触发一次

简介: 使用 Vue 框架开发项目中,遇到个问题,就是在用户提交数据时,如果连续多次点击按钮,会触发多次,导致数据异常,因此需要限制用户短时间内多次点击同一按钮,只触发一次。

使用 Vue 框架开发项目中,遇到个问题,就是在用户提交数据时,如果连续多次点击按钮,会触发多次,导致数据异常,因此需要限制用户短时间内多次点击同一按钮,只触发一次。

1. 自定义指令

利用元素的 disabled 属性,新建自定义指令,preventClick.js

1export default {
 2  install(Vue) {
 3    Vue.directive('preventClick', {
 4      inserted(button, bind) {
 5        button.addEventListener('click', () => {
 6          if (!button.disabled) {
 7            button.disabled = true;
 8            setTimeout(() => {
 9              but.disabled = false
10            }, 2000)
11          }
12        })
13      }
14    })
15  }
16}

在 main.js 中引入

1.png

组件中使用

2.png

2. 防抖函数

函数防抖的基本思想是设置一个定时器,在指定时间间隔内运行代码时清楚上一次的定时器,并设置另一个定时器,直到函数请求停止并超过时间间隔才会执行。

1export function debounce(fn, delay = 2000) {
 2 // 记录上一次的延时器
 3 var timer = null;
 4 return function() {
 5  var args = arguments;
 6  var that = this;
 7  // 清除上一次延时器
 8  clearTimeout(timer)
 9  timer = setTimeout(function() {
10    fn.apply(that,args)
11  }, delay);
12 }
13}

导入到组件中使用

3.png


相关文章
|
2天前
|
JavaScript 测试技术
vue不同环境打包环境变量处理
vue不同环境打包环境变量处理
13 0
|
2天前
|
JavaScript
vue中高精度小数问题(加减乘除方法封装)处理
vue中高精度小数问题(加减乘除方法封装)处理
12 0
|
2天前
|
JavaScript
vue项目使用可选链操作符编译报错问题
vue项目使用可选链操作符编译报错问题
6 0
|
2天前
|
JavaScript
Vue项目启动报错处理
Vue项目启动报错处理
6 1
|
2天前
|
JavaScript 定位技术
vue项目开发笔记记录(二)
vue项目开发笔记记录
28 0
|
2天前
|
JSON JavaScript API
vue项目开发笔记记录(一)
vue项目开发笔记记录
29 0
|
2天前
|
JavaScript
Vue-实现点击空白处隐藏某节点
Vue-实现点击空白处隐藏某节点
9 1
|
7天前
|
JavaScript API
vue 侦听器
vue 侦听器
|
7天前
|
JavaScript 算法 Linux
【vue报错】error:0308010C:digital envelope routines::unsupported
【vue报错】error:0308010C:digital envelope routines::unsupported
34 3
|
2天前
|
缓存 JavaScript 前端开发
vue项目实战:实战技巧总结(中)
vue项目实战:实战技巧总结
27 1