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 文件中使用

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