ItzIsonn
@ItzIsonn
Type something...

Как выполнить функцию при нажатии enter, только если всё заполнено?

У меня есть 6 input, в каждый из которых можно ввести только 1 букву. Мне надо, чтобы, когда ты ввёл все 6 букв и нажал enter (желательно, но главное не на кнопку), выполнялась функция (которую я сделаю)

HTML
<input class="input1" type="text" maxlength="1" oninput='this.value=this.value.replace(/[^а-яё]+/g, "");' data-n=1 style="margin-left: 155px;">
            <input class="input2" type="text" maxlength="1" oninput='this.value=this.value.replace(/[^а-яё]+/g, "");' data-n=2>
            <input class="input3" type="text" maxlength="1" oninput='this.value=this.value.replace(/[^а-яё]+/g, "");' data-n=3>
            <input class="input4" type="text" maxlength="1" oninput='this.value=this.value.replace(/[^а-яё]+/g, "");' data-n=4>
            <input class="input5" type="text" maxlength="1" oninput='this.value=this.value.replace(/[^а-яё]+/g, "");' data-n=5>
            <input class="input6" type="text" maxlength="1" oninput='this.value=this.value.replace(/[^а-яё]+/g, "");' data-n=6>


JavaScript
const ins = document.querySelectorAll('input');



ins.forEach(i => i.addEventListener('input', onInput))

function onInput(e) {
  e.target.value = e.target.value[e.target.value.length - 1] || "";
  const n = e.target.dataset.n
  const next = document.querySelector(`input[data-n="${+n + 1}"]`)

if(e.target.value == ""){
  if(n == 1) {
  document.querySelector(`input[data-n=1]`).focus();
  }
  else {
  document.querySelector(`input[data-n="${+n - 1}"]`).focus();
  }
  }
  else {
  if (next) {
    next.focus()
  }}
}
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
Henxed
@Henxed
Пока всё не будет заполнено, форма не отправиться, как заполниться, тогда Enter сработает. Если на Enter будет что-то другое, то просто вставьте свой код вместо form.submit()
if (e.key === 'Enter' && isValid) {
    form.submit()
 }



Без формы и срабатывания своей функции по нажатию Enter
https://codepen.io/Henxed/pen/zYJpWJP (пример в комментариях, тут конфликт между codepen)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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