vue實現(xiàn)button按鈕的重復點擊指令方式
更新時間:2024年08月29日 10:07:47 作者:zhooson
這篇文章主要介紹了vue實現(xiàn)button按鈕的重復點擊指令方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
vue實現(xiàn)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文件夾創(chuàng)建文件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 文件中使用

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue?draggable組件實現(xiàn)拖拽及點擊無效問題的解決
這篇文章主要介紹了vue?draggable組件實現(xiàn)拖拽及點擊無效問題的解決,只需要在設置handle屬性就可以了,.defaultTypeTag 是要拖拽的塊的類名,要注意的是需要做點擊事件的項不能包含在這個類名里面,不然會無法觸發(fā)點擊事件,詳細解決辦法跟隨小編一起學習吧2022-05-05
vue+el-element中根據文件名動態(tài)創(chuàng)建dialog的方法實踐
本文主要介紹了vue+el-element中根據文件名動態(tài)創(chuàng)建dialog的方法實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
詳解Vue一個案例引發(fā)「內容分發(fā)slot」的最全總結
這篇文章主要介紹了詳解Vue一個案例引發(fā)「內容分發(fā)slot」的最全總結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12

