@clifford
Чтобы запретить ввод указанных символов в input type="number" во vue.js, можно использовать директиву v-on:keydown и обработчик события для проверки введенных символов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<template>
<div>
<input type="number" v-model="value" v-on:keydown="handleKeyDown" />
</div>
</template>
<script>
export default {
data() {
return {
value: ""
};
},
methods: {
handleKeyDown(e) {
// запрещаем ввод символов '+', '-', 'е'
if (
e.key === "+" ||
e.key === "-" ||
e.key.toLowerCase() === "е"
) {
e.preventDefault();
}
}
}
};
</script>
|
В данном примере мы создаем input type="number" и связываем его значение с переменной value во vue.js с помощью директивы v-model. Затем мы добавляем обработчик события v-on:keydown, который будет вызываться при нажатии клавиши на клавиатуре.
В обработчике мы проверяем введенный символ с помощью свойства key объекта события e. Если введенный символ равен "+" или "-", или символ "е" набран в нижнем регистре (распространенное заблуждение при вводе на кириллице), мы вызываем метод preventDefault() для предотвращения его ввода в input.
@clifford
Если вы хотите дополнительно ограничить поле только числами и выключить возможность ввода точки '.' или запятой '.', вы можете использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<template>
<div>
<input type="number" v-model="value" v-on:keydown="handleKeyDown" @input="handleInput" pattern="[0-9]*" />
</div>
</template>
<script>
export default {
data() {
return {
value: ""
};
},
methods: {
handleKeyDown(e) {
// запрещаем ввод символов '+', '-', 'е'
if (
e.key === "+" ||
e.key === "-" ||
e.key.toLowerCase() === "е"
) {
e.preventDefault();
}
},
handleInput() {
// удаляем все символы, кроме цифр
this.value = this.value.replace(/D/g, '');
}
}
};
</script>
|
В данном случае мы добавили атрибут pattern="[0-9]*" для того, чтобы ограничить поле только цифрами. Метод handleInput добавляет дополнительную проверку и удаляет все символы, не являющиеся цифрами, включая точку или запятую.