lavezzi1
@lavezzi1

Как кроссплотформенно поймать keyCode?

Здравствуйте. Все просто, нужно отследить пробел в инпуте, отменить действие и применить свое. Делаю так:
<input @keydown="keydownHandler($event)" v-model="element"/>

keydownHandler(e) {
        console.log(event.keyCode);
        let key = event.keyCode || event.which;
        
        switch (key) {
          case 32:
            event.preventDefault();
            this.push();
            break;
        }
}


В браузераз да десктопе работает, в сафари на iphone вроде тоже. А вот на андроиде keydown не отслеживается. А на других в keyCode детекторах всегда 229. Перечитал кучу тикетов на stackletoverflow и уже каша в головве. Есть какое то нормальное решение данной проблемы?
  • Вопрос задан
  • 444 просмотра
Пригласить эксперта
Ответы на вопрос 1
@AnneSmith
самая ленивая
keyCode нужен, если вам важна конкретная клавиша, а вашем случае можно просто читать значение инпута
вот такой код работает у нас вроде бы на всех устройствах, мы так убираем нули и лишние цифры после десятичной точки, должно работать и для пробела
$("ваш инпут").on("keypress", function (event) {
  if( $(this).val() == " " ) {
      // выполнять нужные действия
  }
});

пробелы по краям мы убираем с помощью jquery trim() по событию blur или focusout, то есть если вводится один пробел то он сразу удаляется
Ответ написан
Ваш ответ на вопрос

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

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