element ui 计数器长按,快速点击的连续提交问题解决

本文探讨了Element UI计数器组件在长按时导致的数据重复提交问题,并提供了详细的解决方案,包括使用mouseup事件、定时器防抖及边界值判断,确保数据准确提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:点击计数器±,修改数据并提交
问题:由于计数器按钮可以长按,change监听到数据变化导致数秒内提交几十次数据
解决:element计数器有默认的change事件,所以我在change事件里添加mouseup事件提交数据,
问题2:change事件里的mouseup会执行多次累加(console出来的是1 1,2 1,2,3 1,2,3,4 …以此类推),也就是说还是会提交多次,而且越来越多
解决2:在on前面加一个off

      handleChange(id, val) {
        let _this = this;
        $('.el-input-number span').off('mouseup').on('mouseup',function () {
          _this.numChange(id,val)//提交数据函数
        });
      },

问题3:快速点击还是会提交多次
解决3:用定时器

		handleChange(id, val) {
			let _this = this;
            $('.el-input-number span').off('mouseup').on('mouseup',function () {
              _this.mytime=new Date().getTime()
              clearTimeout(_this.mytimeout)
              _this.mytimeout=setTimeout(function () {
                if(new Date().getTime()-_this.mytime>500){
                     _this.numChange(id,val)//提交数据函数
                }
              },600)
            });
		}

问题4:到达最大最小数值限制时还会触发提交
解决4:下方代码

handleChange(id, val) {
  let _this = this;
  $('.el-input-number span').off('mouseup').on('mouseup',function () {
    _this.mytime=new Date().getTime()
    clearTimeout(_this.mytimeout)
    _this.mytimeout=setTimeout(function () {
      if(new Date().getTime()-_this.mytime>500){
        if(val!=_this.min_max){
          _this.numChange(id,val)//提交数据函数
          _this.min_max=val
        }
      }
    },600)
  });
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值