当前位置: 代码网 > it编程>编程语言>Javascript > vue实现button按钮的重复点击指令方式

vue实现button按钮的重复点击指令方式

2024年09月08日 Javascript 我要评论
vue实现button按钮的重复点击指令// 注册一个全局自定义指令 `v-debounce`vue.directive('debounce', { // 当被绑定的元素插入到 dom 中时...

vue实现button按钮的重复点击指令

// 注册一个全局自定义指令 `v-debounce`
vue.directive('debounce', {
  // 当被绑定的元素插入到 dom 中时...
  inserted: function (el, binding) {
    let timer;
    el.addeventlistener('click', () => {
      cleartimeout(timer);
      timer = settimeout(() => {
        binding.value(); // 调用传给指令的方法
      }, 500);
    });
  },
  // 当绑定元素的父组件更新时...
  update: function (el, binding) {
    let timer;
    el.addeventlistener('click', () => {
      cleartimeout(timer);
      timer = settimeout(() => {
        binding.value(); // 调用传给指令的方法
      }, 500);
    });
  }
});

// 使用指令
// 在组件中
<template>
  <button v-debounce="myclickhandler">click me</button>
</template>

<script>
export default {
  methods: {
    myclickhandler() {
      // 处理点击事件
    }
  }
}
</script>

vue提交表单重复点击,重复提交防抖问题

问题:用户点击保存时,可能会多次点击。导致生成重复数据。

目标:多次点击时,1s内只允许提交一次数据。

解决方案

1.在utils文件夹创建文件preventreclick.js

export default {
    install (vue) {
      // 防止按钮重复点击
      vue.directive('preventreclick', {
        inserted (el, binding) {
          // console.log("binding-7", binding)
          el.addeventlistener('click', () => {
            if (!el.disabled) {
              el.disabled = true
              settimeout(() => {
                el.disabled = false
              }, binding.value || 2000)
            }
          })
        }
      })
    }
  }

2.在main.js中引入

3、在.vue 文件中使用

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com