抛砖引玉——上代码
首先想到在input事件中正则匹配一下,但是,在输入错误格式或非数字的情况下,会将整个输入框清空,体验很不好:
<template>
<input
placeholder="限制小数点后两位"
type="text"
v-model="count"
@input="scope.row.count=/^\d+\.?\d{0,2}$/.test(count)||count == '' ? count : count=''">
</template>
<script>
data() {
return {
count: 0
}
}
</script>
然后我就加了一个字段,在keyup事件中赋值,然后匹配:
<template>
<input
placeholder="限制小数点后两位"
type="text" v-model="count"
@keydown="checkKeydown($event, count)"
@input="scope.row.count=/^\d+\.?\d{0,2}$/.test(count)||count == '' ? count : count=checkValue">
</template>
<script>
data() {
return {
count: '',
checkValue: ''
}
},
methods: {
checkKeydown(e, value){
this.checkValue = value;
}
}
</script>
这样已经可以实现需求了,不过体验上还是有一点怪,在输入不匹配时光标会闪动,最佳的体验应该是在keyup中将不匹配的按键直接return,不过这样需要额外判断一下backspace、delete、——>、<——等,不知各位大佬是怎么实现的,欢迎评论!!
附:关于input的都可以交流呀
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。