描述:
<input v-model="value" type="number" password placeholder="请输入六位数字" @input="onKeyInput" />
设置input输入框的类型为数字 type=number 且为密码类型,但是键盘上仍然可以输入其他非数字字符。
解决方法:
监听input事件过滤非数字字符
filter(event) { //过滤input密码类型只输入数字
let i = event.target.value
let num = i.charAt(i.length-1)
var reg=new RegExp("^[0-9]*$")
if(!reg.test(num)) {
return i.slice(0,-1)
} else {
return i
}
},
(1)正则表达式:^[0-9]*$ 验证数字
(2)设置v-model绑定值,修改input输入值
注:input
事件处理函数内实时修改当前值不生效,可以延迟设置,例如:setTimeout(() => { this.value = 100 }, 0)
参考链接:JS正则表达式验证数字非常全