Element-ui input 输入框限制只能输入数字的问题

需求说明

后台管理系统,使用element-ui el-input组件,要求只能输入数字,最先使用的办法:

<el-input
 v-model.number='count'
 type='number'
 maxLength='9'
/>
复制代码

存在的问题

1. maxLength不生效
2. 可以输入e
3. 可以输入1.1.....11...1
复制代码

目前解决的办法(可以生效)

<el-input
 v-model='count'
 oninput="value=value.replace(/[^\d]/g,'')"
 maxLength='9'
/>
复制代码

目前存在的问题

用正则限制了只能输数字后,如果某次操作输入的是中文,会导致后续再输入数字,
也无法更新v-model的值,如下图

看了源码得知当 isOnComposition === true 时,是不会去更新值的;
复制代码

 

拓展

保留小数点后几位
复制代码
<el-input
 v-model='number'
 oninput="if(isNaN(value)) { value = null } if(value.indexOf('.')>0){value=value.slice(0,value.indexOf('.')+3)}"
 maxLength='9'
/>
复制代码

v-model没有值的的问题我是这么解决的

<el-input
 v-model='count'
 ref='ele'
 oninput="value=value.replace(/[^\d]/g,'')"
 maxLength='9'
/>

const elem = this.$refs.ele
if(elem.isOnComposition) {  // em..其实这个判断可以去了
    this.count = elem.currentValue
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值