Я пытаюсь получить значение ключа, нажав либо на keyPress
, keydown
, либо keyUp
. Различные решения здесь хорошо работают на Chrome, FireFox, IE и т. Д. Однако они не работают на устройствах Android.Надежный способ получить значение keyEvent для «всех» браузеров, включая Mobile
Я попробовал несколько решений, вдохновленные из следующих SO:
- Get Character value from KeyCode in JavaScript... then trim
- How to convert keycode to character using javascript
- how to get String/character value from key Code;
Первое решение:
element.keydown(function (e) {
var keyCode = e.charCode || e.keyCode || e.which;
var digit = String.fromCharCode(keyCode);
// here digit is "å" on android using danish locale
}
KeyUp дает тот же результат. KeyPressed не будет гореть на хроме на Android.
Для воспроизведения я сделал plunkr, который показывает поведение:
https://plnkr.co/BVUfiJrBr0RBPDst9izD/
Он отлично работает на рабочем столе, но KEYCODE всегда 229
на андроид браузерах, независимо от нажатой клавиши.
Я воспроизвел ошибку на:
- Samsung Galaxy S6, Android 5.1.1, браузер: Chrome 48.0.2564.95
- Sony Experia Z2, Android 5.1.1, браузер: Chrome 48.0.2564.95
Он сделал работу на:
- Samsung Galaxy S6, Android 5.1.1, браузер: Firefox
- Iphone
Попытка воспроизвести ошибку указывает на ошибку в Chrome. Есть ли другой путь вокруг этой проблемы?
Возможный дубликат [Клавиши захвата, введенные на виртуальной клавиатуре Android с использованием javascript] (https://stackoverflow.com/questions/30743490/capture-keys-typed-on-android-virtual-keyboard-using-javascript) – reyiyo