Задать вопрос
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 и уже каша в головве. Есть какое то нормальное решение данной проблемы?
  • Вопрос задан
  • 476 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AnneSmith
самая ленивая
keyCode нужен, если вам важна конкретная клавиша, а вашем случае можно просто читать значение инпута
вот такой код работает у нас вроде бы на всех устройствах, мы так убираем нули и лишние цифры после десятичной точки, должно работать и для пробела
$("ваш инпут").on("keypress", function (event) {
  if( $(this).val() == " " ) {
      // выполнять нужные действия
  }
});

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

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

Похожие вопросы