【发布时间】:2021-07-23 20:49:42
【问题描述】:
我在尝试只允许数字时遇到问题(可能是一个点和一个小数)并且数字必须介于 0 和 10 之间。 例子:
- 2 -> 允许
- 8.5 -> 允许
- 7.14 -> 不允许
- 7.1 -> 允许
- 10.1 -> 不允许
- 10 -> 允许
- 15.2 -> 不允许
首先,这是一段代码:
HTML:
<b-form-input
v-model="userDto.score"
@keypress="restrictScoreValue"
type="number"
min=0
max=10
/>
JavaScript:
restrictScoreValue($event) {
const keyCode = ($event.keyCode ? $event.keyCode : $event.which)
// only allow number and one dot
if ((keyCode < 48 || keyCode > 57) && (keyCode !== 46 || this.userDto.score.indexOf('.') !== -1)) { // 46 is dot
$event.preventDefault()
}
// restrict to 1 decimal place
if (this.userDto.score !== null && this.userDto.score.indexOf('.') > -1 && (this.userDto.score.split('.')[1].length > 0)) {
$event.preventDefault()
}
}
它只允许点后的数字和一位小数。但是只允许 0 到 10 之间的数字是行不通的(我可以在点前输入很多数字),如果我粘贴了不正确的分数(例如:15.43),它允许。
如何改进代码以满足需求?
【问题讨论】:
标签: javascript vue.js validation bootstrap-vue