首页IT科技vue禁止点击事件触发(前端vue中防止用户短时间内多次点击按钮触发点击事件解决方法)

vue禁止点击事件触发(前端vue中防止用户短时间内多次点击按钮触发点击事件解决方法)

时间2025-05-02 06:51:48分类IT科技浏览3748
导读:1.按钮点击后添加loading,接口返回成功后再移除loading(经过多次尝试发现,此方法不能完全确保只调用一次接口,第二次添加时仍会多次调用接口),方法如下:...

1.按钮点击后添加loading            ,接口返回成功后再移除loading(经过多次尝试发现                ,此方法不能完全确保只调用一次接口    ,第二次添加时仍会多次调用接口)         ,方法如下:

 html代码:

 javascript代码:

<script> export default { data() { return { onLoading: false, }; }, methods: { onSave() { this.onLoading = true; let parmas = { //这里是接口传入参数 }; insert(parmas) .then((res) => { if (res.code === 200) {this.$message.success(res.message); this.onLoading = false; } else { this.$message.error(res.message); this.onLoading = false; } }) .catch((error) => { console.log(error); }); }, }, }; </script>

2.在规定时间内禁用按钮                 ,按钮无法点击      ,即实现接口不被多次调用      ,方法如下:

 html代码:

<el-button @click="onSave" :disabled="isdisabled">保存</el-button>

 javascript代码:

<script> export default { data() { return { isdisabled: false, }; }, methods: { onSave() { this.isdisabled = true; //这里使用定时器解除按钮禁用 setTimeout(() => { this.isdisabled = false; }, 1500); let parmas = { //这里是接口传入参数 }; insert(parmas) .then((res) => { if (res.code === 200) {this.$message.success(res.message); } else { this.$message.error(res.message); } }) .catch((error) => { console.log(error); }); }, }, }; </script>

3.使用节流函数

 节流:是指一种在指定事件防止函数被频繁调用的思想

 节流函数:是结合时间戳封装的函数                  ,在指定时间内会调用一次方法

 html代码:

<el-button @click="getTrottle">保存</el-button>

 javascript代码:

<script> const throttle = (func, wait = 50) => { //上一次执行该函数的时间 let lastTime = 0; return function (...args) { // 当前时间 let now = +new Date(); // 将当前时间和上一次执行函数时间对比 // 如果差值大于设置的等待时间就执行函数 if (now - lastTime > wait) { lastTime = now; func.apply(this, args); } }; }; export default { data() { return { getTrottle: undefined, }; }, created() { this.getTrottle = throttle(this.onSave, 3000); }, methods: { onSave() { let parmas = { //这里是接口传入参数 }; insert(parmas) .then((res) => { if (res.code === 200) { this.$message.success(res.message); } else { this.$message.error(res.message); } }) .catch((error) => { console.log(error); }); }, }, }; </script>

 以上就可以实现了         ,如果需要多次使用节流函数   ,也可以封装后再使用:

// 封装节流函数 // 参数:1.回调函数                  ,2.时间            ,3.布尔值 // 时间戳: 毫秒值 // 相差的毫秒值 = 结束的时间戳 - 开始的时间戳 function trottle(callback,times,bool) { // 记录开始的时间戳 var startTime = new Date().getTime(); // 记录布尔值 var fistFlag = bool; // 返回function函数 (事件函数) return function() { // 记录结束的时间戳 var endTime = new Date().getTime(); // 相差的毫秒值 var totalTime = endTime - startTime; // 记录事件对象 var args = arguments[0]; // 判断布尔值是否为true if(fistFlag){ if(typeof callback == "function"){ // 调用回调函数 callback(args); // 设置布尔值为false fistFlag = false; // 重置开始的时间戳 startTime = endTime; } } // 判断是否达到指定的时间 if(totalTime >= times){ // 符合条件执行回调函数 if(typeof callback == "function"){ // 调用回调函数 callback(args); // 重置开始的时间戳 startTime = endTime; } } } }

  以上就是对于用户短时间内多次点击按钮触发点击事件的解决方法,哪位小伙伴有其他更简单的方法欢迎评论留言交流哦~

声明:本站所有文章               ,如无特殊说明或标注               ,均为本站原创发布          。任何个人或组织  ,在未征得本站同意时            ,禁止复制            、盗用                、采集    、发布本站内容到任何网站         、书籍等各类媒体平台                。如若本站内容侵犯了原著者的合法权益                ,可联系我们进行处理      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
c++入门知识(C++学习笔记 (2)) postman倒入json文件(PostMan接口测试(很全面的接口测试教程))