событие onkeyup в Safari на IOS7 с клавиатуры bluetooth

У меня есть следующая установка:

  • Bluetooth-сканер
  • айпад
  • Веб-страница с текстовым полем для ввода скана

Использование:

  • Текстовое поле фокуса пользователя и сканирование штрих-кода с помощью сканера Bluetooth
  • Сканер добавляет ENTER (13) в конце сканирования

Проблема:

В Safari в IOS7, похоже, произошли изменения в том, как обрабатываются события клавиатуры на устройствах Bluetooth. Код ...

window.onkeyup = function (e) {
    console.log(e.KeyboardEvent)
}

... должен вернуть информацию о нажатой клавише. Вместо этого я получаю...

keyCode: 0
keyIdentifier: "Unidentified"

... независимо от того, какую клавишу я нажимаю.

Тот же результат в виде сканера bluetooth и клавиатуры bluetooth.

Спасибо / Э


person EmilPennlov    schedule 24.09.2013    source источник
comment
если кто-нибудь наткнется на это: эта проблема все еще существует 4 года спустя with-onkeyup" title="Bluetooth-клавиатура iPad возвращает код 0 для любой клавиши с onkeyup"> stackoverflow.com/questions/45924702/   -  person William Reed    schedule 28.08.2017


Ответы (2)


Кажется, что «onkeypress» работает, как и ожидалось.

Поскольку это была проблема, с которой столкнулись в проекте Sencha Touch, а Sencha Touch не имеет события нажатия клавиши в текстовых полях, я публикую код, который решил мою проблему.

{
    xtype:'searchfield',
    name:'search',
    placeHolder:'search',
    listeners: {
        painted: {
            fn: function () {
                var me = this;
                me.element.dom.onkeypress = function (e) {
                    if (e.keyCode === 13) {
                        me.fireEvent('searchkeypress', me, e);
                    }
                };
            }
        }
    }
}
person EmilPennlov    schedule 26.09.2013

Я столкнулся с похожей проблемой @EmilPennlov. Я смог решить эту проблему, используя $watch в поле ввода. Работал как шарм.

person nikjohn    schedule 19.01.2015