@IvanGrishov
Начинающий Frontend разработчик

Как разрешить в input ввод только конкретных цифр?

Добрый день. Мне нужно разрешить вводить в input только цифры от 1 до 6.

Но у меня возникает баг, я не могу удалить 1, т.к. в условии стоит что, если value меньше 1, то value = 1.
И из-за этого не вводятся остальные цифры 2, 3, 4 и т.д.

Подскажите, как можно решить эту проблему. Спасибо за ответ

  • Вопрос задан
  • 517 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Напомню, что input работает не с числами, а с текстом — строками.

Может брать последний символ из строки? Если он 1..6 то заменять им всю строку (сделает из "12" просто "2"). Иначе ставить пустую строку:
const input = document.querySelector('.input');

input.addEventListener('input', event => {
    const { target } = event;
    const { value } = target;
    const last = value.slice(-1);
    target.value = last.match(/[1-6]/) ? last : '';
});

Вообще для такой задачи в интерфейсе может, вместо текстового поля лучше просто шесть кнопок сделать? От 1 до 6. Один тык — один выбор.
А то с текстовым полем надо больше действий: перейти в него, нажать на клавиатуре цифру.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
imko
@imko
Senior Scratch Developer
Просто заменяй при вводе все несоответствующие символы
input.addEventListenter("input", function(){
	this.value = this.value.replace(рега-которая-покрывает-все-недопустимые-значения, "")
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы