防抖按钮指令

这篇博客介绍了一个防止在短时间内重复点击按钮的问题解决方案,通过实现一个防抖函数,确保在规定的时间内只能触发一次点击事件。示例展示了如何在Vue中应用此防抖函数,用于限制表单提交按钮的点击次数,避免新增重复数据。
摘要由CSDN通过智能技术生成
/**
 * @desc
 * 背景:在开发中,有些提交保存按钮有时候会在短时间内被点击多次,这样就会多次重复请求后端接口,造成数据的混乱,比如新增表单的提交按钮,多次点击就会新增多条重复的数据。
 * 需求:防止按钮在短时间内被多次点击,使用防抖函数限制规定时间内只能点击一次。
 * 思路:
 * 1. 定义一个延迟执行的方法,如果在延迟时间内再调用该方法,则重新计算执行时间。
 * 2. 将时间绑定在 click 方法上。
 */
const debounceFn = {
  inserted: function(el, binding) {
    let timer;
    // enter按键事件
    el.addEventListener('keyup', () => {
      if (timer) {
        clearTimeout(timer);
      }
      timer = setTimeout(() => {
        binding.value();
      }, 1000);
    });
    // 点击事件
    el.addEventListener('click', () => {
      if (timer) {
        clearTimeout(timer);
      }
      timer = setTimeout(() => {
        binding.value();
      }, 1000);
    });
  }
};

export default {
  install(Vue, { name = 'debounce' } = {}) {
    Vue.directive(name, debounceFn);
  }
};




使用:
<template>
  <el-button type="primary" v-debounce="onSubmit">防抖动指令-登录</el-button>
</template>
<script>
export default {
  methods: {
    onSubmit(event){}
  }
}
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值