其他分享
首页 > 其他分享> > Vue中防止按钮重复点击提交的方法

Vue中防止按钮重复点击提交的方法

作者:互联网

经常会遇到的一个问题(如图所示),在短时间内点击按钮多次,会造成重复提交,出现多条数据,以下讲一下我的解决办法,比较类似,但是用起来能有效阻止提交多次。

一、自定义全局指令

	// 防止el-button重复点击
	Vue.directive('preventReClick', {
 	 inserted(el, binding) {
    	el.addEventListener('click', () => {
      	if (!el.disabled) {
       	 el.disabled = true
       	 setTimeout(() => {
         	 el.disabled = false
        	}, binding.value || 2000)
      	}
    	})
 	 }
	});

	// 添加新属性
	<el-button type="primary" @click="handleSave" v-preventReClick>保存</el-button>

二、自定义局部指令

	// 防止el-button重复点击
	directives: {
 	 preventReClick: {
   	 // 指令的定义
    	inserted(el, binding) {
     	 el.addEventListener('click', () => {
      	  if (!el.disabled) {
       	   el.disabled = true
       	   setTimeout(() => {
       	     el.disabled = false
       	   }, binding.value || 2000)
      	  }
     	 })
   	 	}
  	  }
	},
   // 添加新属性
   <el-button type="primary" @click="handleSave" v-preventReClick>保存</el-button>

三、动态控制disabled属性

   // 添加属性
   <el-button type="primary" @click="handleSave" :disabled="disabled">保存</el-button>
    // 调用事件动态控制disabled属性
    handleSave() {
      this.disabled = true;
      let params = {
        data: this.data,
      };
      this.$requestFn("POST", this.$url.export.test, params)
      .then((res) => {
        this.$toast.success("保存成功");
      })
      .finally(() => {
        setTimeout(() => {
	    	this.disabled = false;
        }, 2000)
      });
    },

以上是三种不同的方法,都能实现防止按钮重复点击导致提交多次的问题。

标签:el,Vue,button,disabled,点击,按钮,两秒
来源: https://www.cnblogs.com/ping-an/p/15830170.html