【发布时间】:2020-01-29 14:18:04
【问题描述】:
我正在使用Vue.JS(Bootstrap-Vue)构建表单,我的输入有以下代码:
<b-form-input
v-mask="'####'"
number
type="number"
no-wheel
pattern="[0-9]"
step="1"
:class="{ 'hasError': $v.form.dobYear.$error }"
v-model.number="$v.form.dobYear.$model"
class="form-input"
name="year"
id="year"
maxlength="4"
min="1900"
max="2020"
@keydown="filterKey"
></b-form-input>
当用户按下时,我想阻止输入超过 4 个字符,这是可行的,但是在测试时,我可以看到句号和破折号以及其他类似的字符也可以添加到输入并忽略最多 4 个字符。如何更新以下代码以确保只能将数字添加到我在移动设备上的输入中。我正在尝试检测是否按下了任何不需要的键,然后阻止默认操作。 (我在 Android Chrome 上测试过)
filterKey(e) {
const value = e.target.value;
const key = e.key;
console.log(value, this.amount);
if (String(value).length === 4) {
//check if a number is pressed after 4 have been entered
if (!isNaN(Number(key))) {
e.preventDefault();
return;
} else if (key == 190 || key == 189 || key == 107 || key == 69) {
e.preventDefault();
return;
}
}
}
【问题讨论】:
标签: javascript vue.js input