vue2全局指令-限制按钮在某个时间内的点击事件

需求:点击按钮发送请求时,如果连续快速点击,容易发送多次请求,怎么在某一时间段内点击多次按钮,但只发送一次请求呢?

解决思路:

点击多次,只发送一次请求,可以采用函数的防抖节流;当然也可以写一个局部或全局的自定义指令去限制按钮的点击事件。

解决办法:

本次采用的是:利用全局指令去限制按钮的点击事件,便于其他页面使用(亲测有用)。

本文可直接复制粘贴使用(但请先搞清楚代码的逻辑):

  1. 首先在src目录下新建一个directive文件夹,在此文件夹下新建一个文件,取名为: preventClick.js,在文件内书写下方代码:
// 设置全局指令,对button按钮进行点击限制
export default {
    install(Vue) {
      Vue.directive('preventClick', {
        inserted(button, bind) {
          button.addEventListener('click', () => {
            if (!button.disabled) { // 按钮有disabled属性
              button.disabled = true;
              setTimeout(() => {
                button.disabled = false
              }, 5000)
            }
          })
        }
      })
    }
}
  1. 在main.js中全局注册
// 全局指令
import preventClick from '@/directive/preventClick.js'
Vue.use(preventClick)
  1. 在需要使用的文件中直接v-preventClick即可
<button v-if="score.enabledStatu" @click="stopScan(text, score)" class="options" v-preventClick>停止</button>

总结:

需求很多,但解决办法也很多,慢慢分析。本文如有不全面的地方,请指教。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值