vue中防止按钮多次点击

按钮

<el-button v-if="$route.meta.btns.updateBtn" size="mini" type="warning" icon="el-icon-download"
                           @click="derive" :disabled="disabled">导出
                </el-button>

return 中定义:

 return {          
                disabled:false,
                }

按钮调用方法

//点完之后十秒打开按钮
 derive(){           
                const _this = this;
                _this.disabled = true;
                setTimeout(()=>{
                    _this.disabled = false;
                },10000)
              }

销毁

var timer = setTimeout(function(){
    console.log(2);
  },1000);

clearTimeout(timer);
### Vue2 中防止按钮多次点击的实现方法 在 Vue2 项目中,可以通过自定义指令的方式有效防止按钮多次点击。以下是具体的实现方式: #### 方法一:基于引用[^1] 通过创建一个全局自定义指令 `v-prevent-re-click` 来控制按钮的状态,在指定的时间范围内禁用按钮。 ```javascript // 定义防重复点击指令 import Vue from 'vue'; const preventReClick = Vue.directive('preventReClick', { inserted: function (el, binding) { el.addEventListener('click', () => { if (!el.disabled) { el.disabled = true; setTimeout(() => { el.disabled = false; }, binding.value || 3000); // 默认等待时间为3秒 } }); }, }); export { preventReClick }; ``` 此方法的核心逻辑在于监听按钮点击事件,在其触发时临时将其设为禁用状态,从而阻止用户的连续操作[^1]。 #### 使用示例 在需要使用的组件中引入注册该指令: ```html <template> <button v-prevent-re-click="3000" @click="handleClick">提交</button> </template> <script> import { preventReClick } from '@/path/to/directive'; export default { directives: { preventReClick, }, methods: { handleClick() { console.log('按钮点击'); }, }, }; </script> ``` 在此处,`v-prevent-re-click="3000"` 表示按钮将在点击后锁定 3 秒钟[^1]。 --- #### 方法二:基于引用[^2] 另一种更复杂的方案可以扩展按钮的样式变化功能,不仅禁用按钮还调整其外观以提示用户当前处于不可交互状态。 ```javascript // 自定义指令文件 preventReClick.js import Vue from 'vue'; const preventReClick = Vue.directive('preventReClick', { inserted: function (el, binding) { el.addEventListener('click', () => { if (!el.disabled) { el.disabled = true; // 修改按钮样式 el.style.backgroundColor = '#99c5ff'; el.style.border = '1px solid #99c5ff'; el.style.color = '#FFF'; el.style.cursor = 'not-allowed'; setTimeout(() => { el.disabled = false; el.style.backgroundColor = '#338AFF'; el.style.border = '1px solid #338AFF'; el.style.color = '#FFF'; el.style.cursor = 'pointer'; }, binding.value || 2000); } }); }, }); export { preventReClick }; ``` 这种方法除了基本的功能外,还增强了用户体验,使界面更加友好[^2]。 #### 注册与使用 将上述指令导入到项目的入口文件 `main.js` 完成初始化: ```javascript import { preventReClick } from './util/preventReClick'; Vue.use(preventReClick); ``` 随后可以在任何 `.vue` 文件中直接使用 `v-prevent-reClick` 指令而无需额外配置[^2]。 --- ### 总结 两种方法均能有效地解决 Vue2 中按钮多次点击的问题。第一种方法简单高效,适合快速开发;第二种方法则提供了更好的视觉反馈效果,适用于对用户体验有更高要求的应用场景。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值