完美的数字输入框,只能输入两位小数点以千分位分隔,解决iview inputnumber输入光标跳转问题

注意UI框架用的是iview

<InputNumber :formatter="value => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')" :parser="value => value.replace(/\$\s?|(,*)/g, '')" :active-change="false" :max="99999999.99" :min="1" :precision="2" v-model.number="vehicleForm.money"  style="width:100%"></InputNumber>

突然发现一个问题加了active-change=false后输入框就可以输入汉字,又经过试验重新添加了一个事件keyup,过滤掉不是数字的字符。

<InputNumber placeholder="最小金额" @keyup.native="NumberChange" :formatter="value => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')" :parser="value => value.replace(/\$\s?|(,*)/g, '')" :active-change="false"  :max="99999999.99" :min="1" :precision="2" v-model.number="searchForm.minMoney"  style="width:100%"></InputNumber>
NumberChange(e) {
//因为这个有千分位分隔符要去掉
      let filterValue = e.target.value.replace(/,/g,'')
      let value = Number(filterValue)
      if(e.target.value) {
         if(isNaN(value) || typeof value !== 'number') {
           e.target.value = null
         }
      }
    },

把e.target.value重新赋值就不能输入汉字了,应该对任意组件都适用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值