У меня есть несколько полей ввода, и я хочу, чтобы они принимали только числа в Vue.js.
Я хочу запретить пользователю вводить любые символы, кроме цифр от 0 до 9. Я уже сделал это успешно, выполнив это (это решение копировать-вставить доказательство):
Код в шаблоне Vue.js:
<input type="text" name="priceMax" class="input" @input="correctNumberInput" />
Метод, удаляющий все, кроме чисел:
correctNumberInput: function(event){
event.target.value = event.target.value.replace(/[^0-9]/g, "");
}
Это отлично работало на нескольких полях.
Здесь возникает проблема: по другой причине мне нужно было использовать v-model в этих полях ввода. После добавления v-модели мой метод больше не работает. Я предполагаю, что это потому, что v-model также использует событие ввода под капотом. Таким образом, только добавление v-модели останавливает ее работу:
<input type="text" name="priceMax" class="input" @input="correctNumberInput" v-model="priceMax" />
У меня есть несколько возможных решений, но все они включают много повторяющегося кода.
Например, я мог бы добавить наблюдателей для каждого поля ввода, но это было бы много повторяющегося кода (потому что мне нужно было бы сделать это для каждого поля ввода). У меня есть 5 полей ввода, поэтому в основном мне нужно написать 5 почти идентичных наблюдателей. Я бы хотел избежать этого, если это возможно ... Например:
watch:{
number(){
this.priceMax = this.priceMax.replace(/[^0-9]/g, "");
}
}
Есть ли способ решить эту проблему и сделать ее настолько простой, насколько было мое решение, без повторения кода? Было бы неплохо иметь решение, защищенное от копирования. Все предложения приветствуются! Заранее спасибо!