Как сделать проверку на ввод данных и запретить ввод в определенных условиях?

У меня есть поле ввода номера телефона, там стоит маска +7(yxx) xx-xxx
Моя задача сделать чтобы пользователь мог ввести только цифру 9 на место "y", в противном случае запретить ввод.
Я вижу последовательность действия так:

1) Повесить событие keyup на инпут
2) Получить значение инпута
3) Сравнить 3 символ инпута равен ли он 9, если нет то запретить ввод (как получить 3 элемент содержимого пока не понял и запрет на ввод тоже)

Вот первые 2 пункта:

let nomer = document.getElementById('formPhoneCall'); //получаю элемент чтобы повесить событие потом
let nomerLog = document.getElementById('formPhoneCall').value; //получаю содержимое чтобы потом сделать проверку

//вешаю событие и запускаю функцию
nomer.addEventListener('keyup', logKey);
function logKey(e) {
  console.log(nomerLog);
}

//но в консоль выходит только число символов, а не содержимое.

Вопрос: что я делаю не так?
С помощью какого метода получить 3 элемент инпута и после проверки как запретить ввод.
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Bazyn
В nomerLog содержится первоначальное значение которое было вычеслено до ввода пользователем.
//keyup уже поздно т.к. изначение уже изменено, можно keypress или keydown
nomer.addEventListener('keypress', logKey);
function logKey(e) {
//e.target -- наш input на который привязан обработчик  собственно в nomer у вас лежит он же  и можно 
// оборатиться к nomer.value, что бы получить текущие значение input
  const val = e.target.value; 
//e.key содержит собственно значение кнопки нажотой пользователем.
  if (val.length === 2 && e.key != 9) {  	
  	e.preventDefault();  	
  }
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
28 янв. 2021, в 04:36
5000 руб./в час
28 янв. 2021, в 03:43
2000 руб./за проект
28 янв. 2021, в 02:42
120000 руб./в час