vue實(shí)現(xiàn)button按鈕的重復(fù)點(diǎn)擊指令方式
vue實(shí)現(xiàn)button按鈕的重復(fù)點(diǎn)擊指令
// 注冊一個(gè)全局自定義指令 `v-debounce` Vue.directive('debounce', { // 當(dāng)被綁定的元素插入到 DOM 中時(shí)... inserted: function (el, binding) { let timer; el.addEventListener('click', () => { clearTimeout(timer); timer = setTimeout(() => { binding.value(); // 調(diào)用傳給指令的方法 }, 500); }); }, // 當(dāng)綁定元素的父組件更新時(shí)... update: function (el, binding) { let timer; el.addEventListener('click', () => { clearTimeout(timer); timer = setTimeout(() => { binding.value(); // 調(diào)用傳給指令的方法 }, 500); }); } }); // 使用指令 // 在組件中 <template> <button v-debounce="myClickHandler">Click me</button> </template> <script> export default { methods: { myClickHandler() { // 處理點(diǎn)擊事件 } } } </script>
vue提交表單重復(fù)點(diǎn)擊,重復(fù)提交防抖問題
問題:用戶點(diǎn)擊保存時(shí),可能會多次點(diǎn)擊。導(dǎo)致生成重復(fù)數(shù)據(jù)。
目標(biāo):多次點(diǎn)擊時(shí),1s內(nèi)只允許提交一次數(shù)據(jù)。
解決方案
1.在utils文件夾創(chuàng)建文件preventReClick.js
export default { install (Vue) { // 防止按鈕重復(fù)點(diǎn)擊 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 文件中使用
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue中@keyup.enter?@v-model.trim的用法小結(jié)
這篇文章主要介紹了Vue中@keyup.enter?@v-model.trim的用法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12Vue項(xiàng)目引用百度地圖并實(shí)現(xiàn)搜索定位等功能(案例分析)
這篇文章主要介紹了Vue項(xiàng)目引用百度地圖并實(shí)現(xiàn)搜索定位等功能(案例分析),本篇文章為案例分析,技術(shù)點(diǎn)較多,所以篇幅較長,認(rèn)真閱覽的你一定會學(xué)到很多知識,需要的朋友可以參考下2022-09-09vue3純前端表格數(shù)據(jù)的導(dǎo)出與導(dǎo)入實(shí)現(xiàn)方式
這篇文章主要介紹了如何在純前端環(huán)境下使用xlsx-js-style庫進(jìn)行Excel表格文件的下載,并自定義樣式,還提到了使用xlsx庫進(jìn)行Excel表格數(shù)據(jù)的導(dǎo)入,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01npm install報(bào)錯(cuò)缺少python問題及解決
這篇文章主要介紹了npm install報(bào)錯(cuò)缺少python問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06