vue限制输入框的为正数,并且输入框不允许输入正负号,但输入框展示的值与输入框的实际值不相同,
时间: 2024-03-24 11:38:36 浏览: 113
你可以使用 `v-model` 绑定输入框的值,并在输入框的 `input` 事件中进行限制。除了限制非负整数外,还需要限制小数点的输入。具体实现如下:
```html
<template>
<div>
<input type="text" v-model="inputValue" @input="handleInput" />
</div>
</template>
<script>
export default {
data() {
return {
inputValue: ''
}
},
methods: {
handleInput() {
// 正则表达式匹配非负数
this.inputValue = this.inputValue.replace(/[^\d.]/g, '')
// 如果输入框中有多个小数点,只保留第一个小数点
const dotIndex = this.inputValue.indexOf('.')
if (dotIndex !== -1) {
this.inputValue = `${this.inputValue.slice(0, dotIndex+1)}${this.inputValue.slice(dotIndex+1).replace(/\./g, '')}`
}
// 如果输入框中第一个字符是小数点,则加上 0
if (this.inputValue.startsWith('.')) {
this.inputValue = `0${this.inputValue}`
}
// 如果输入框中第一个字符是 0,且第二个字符不是小数点,则自动删除第一个 0
if (this.inputValue.startsWith('0') && !this.inputValue.startsWith('0.')) {
this.inputValue = this.inputValue.slice(1)
}
}
}
}
</script>
```
这里使用了正则表达式 `/[^\d.]/g` 匹配非数字和小数点字符,然后将其替换为空字符串。同时,还需要对输入框中的小数点进行限制,保证只能有一个小数点,且不能出现在第一位。如果输入框中第一个字符是小数点,则自动在前面加上一个 0。如果输入框中第一个字符是 0,且第二个字符不是小数点,则自动删除第一个 0。这样就可以限制输入框只能输入正数了,同时输入框展示的值与输入框的实际值不相同。
阅读全文