Определить ключевое событие как ключевой ввод - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь выяснить, является ли событие событием клавишного ввода или событием не клавишного ввода.Есть ли способ, чтобы узнать это через этот браузер и ОС?

Пример:

  1. keyCode: 68 -> D -> INPUT_EVENT
  2. keyCode: 65 -> A -> INPUT_EVENT
  3. keyCode: 121 -> F10 -> NO_INPUT_EVENT
  4. keyCode: 27 -> ESC -> NO_INPUT_EVENT

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Я не уверен, что есть собственный способ проверить это, но вот некоторые варианты, которые вы можете изучить.

1) используйте RegX, чтобы проверить, что ключ события (т. Е. Event.key) являетсябуква от a до z

2) проверить, начинается ли код event.code с ключевой буквы

Пример

Предполагается, что у меня есть такой HTML-элемент:

<input type="text" id="mytxt">

и JavaScript:

const ele = document.getElementById('mytxt');
ele.addEventListener('keydown', event => {
if(event.code.startsWith('Key')){
    // valid key
    console.log('valid', event);
}
});

Это должно помочь вам получить то, что вам нужно.

0 голосов
/ 19 сентября 2018

AFAIK нет простого способа сделать это.Одним из решений будет проверка на event.key, которая будет возвращать строковое значение, как описано здесь: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values Вы можете занести эти значения в черный список или внести в белый список клавиши ввода (т. Е. Буквенно-цифровые, пунктуация и т. Д.).Какой бы подход вы ни выбрали, он будет немного беспорядочным.

В качестве альтернативы, если вы слушаете нажатия клавиш элемента ввода, вы можете сравнить предыдущее значение ввода с последним.Если длина значения изменилась, то была нажата клавиша ввода.Если нет, то была нажата не входная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...