vue自定义指令-对输入框数字的限制,输入框的数字前面不能输入多余的0,例如00123, 00.12类型的数字

限制数字前面不能输入多余的0,例如00123, 00.12

import Vue from 'vue'
Vue.directive('number', {
  bind(el) {
    el.onkeyup = () => {
      if (el.value) {
        if (parseInt(el.value) == parseFloat(el.value) && !el.value.includes('.')) {
          if (paeseInt(el.value) == 0) {
            el.value = 0
          } else {
            el.value = el.value.replace(/^0/, '')
          }
        } else {
          // 小数
          el.value = el.value.replace(/^0+\./g, '0')
        }
        // 输入多个0,输入框失去焦点或者是输入框失去焦点后点击其他的输入框,会出现00
        // 解决:vue中绑定的值是通过监听input进行赋值的,直接修改输入框值不会触发input事件,需要通过dispatchEvent再次手动触发input事件
        
        el.dispatchEvent(new Event('input'))
      }
    }
  }
})

页面里面使用:

<a-input v-model="value" v-number />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值