方法一:
通过设置type属性:type=“number”,这种方式一般会影响样式,不建议使用,如下图:

<el-input type="number" v-model="aaa"></el-input>

方法二:
通过绑定值限制的方式:v-model.number=“aaa”,这种方式会限制一般的数字,但是会影响maxlengt属性,并且e是可以输入的,一般情况可以使用,严格限制的话不建议使用

<el-input v-model.number="aaa"></el-input>

方法三:(建议使用)
通过对value值进行正则限制:οnkeyup=“value=value.replace(/[^\d]/g,’ ')”,绑定一个onkeyup监听事件,/[^\d]/g 是用来匹配所有非数字内容的正则表达式,将之替换成空字符串,这种方式不会影响任何属性,推荐使用

<el-input v-model="aaa" οnkeyup="value=value.replace(/[^\d]/g,'')"></el-input>

只允许输入数字(整数:小数点不能输入)

<input type="text" onkeyup="value=value.replace(/[^\d]/g,'')" >

允许输入小数(两位小数)

<input type="text" onkeyup="value=value.replace(/^\D (\d (?:.\d{0,2})?). 1')" >

允许输入小数(一位小数)

<input type="text" onkeyup="value=value.replace(/^\D (\d (?:.\d{0,1})?). 1')" >

开头不能为0,且不能输入小数

<input type="text" onkeyup="value=value.replace(/[ \d]/g,'').replace(/ 0{1,}/g,'')" >

方法四
使用input事件
// 判断该值不为负数 并且是一个保留一位小数的数字

 <el-input v-model="input"  @input="handleInput" />
const handleInput = (value:string)=>{
value = value.replace(/^\D*(\d+(?:\.\d{0,1})?)?.*/, (_, num) => num || '')
 }

终极方法

onkeypress="return( /[\d]/.test(String.fromCharCode(event.keyCode) ) )"

本文收集与https://zhuanlan.zhihu.com/p/653873229 只作为快速查询使用

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐