Поддержка BlackBerry JavaScript кодов / нажатий клавиш

Я новичок в работе с устройствами BlackBerry. В настоящее время я сталкиваюсь с проблемой JavaScript на 9700 и перехватываю события нажатия клавиш и получаю правильный код клавиши.

У меня есть такой javascript:

function numbersonly(e) {
    var key
    if(window.event) {
        key = window.event.keyCode; // IE
    }else{
        key = e.which; // Firefox
    }

    alert('keycode : ' + key);

}

И он прикрепляется к полю ввода с помощью ненавязчивого скрипта addEvent.

В стандартном настольном браузере (Firefox и IE) он делает то, что вы думаете ... нажатие клавиши покажет код клавиши через предупреждение.

Однако на Blackberry нажатие клавиши выполняет одно из двух действий:

  • если нажимаются клавиши с цифрами от 1 до 9, ничего не происходит.
  • если это любой другой ключ, keyCode - undefined.

Есть идеи, что происходит? Я предполагаю, что это ограничение поддержки BlackBerry JavaScript.

ОБНОВИТЬ:

Проверено это также на симуляторе 9800, работающем под управлением OS6. Проблем там не существует. Так что это проблема либо BlackBerry OS5, либо физической клавиатуры BlackBerry.


person DA.    schedule 12.01.2011    source источник


Ответы (2)


Я не уверен, установлена ​​ли переменная event при добавлении встроенного обработчика событий.

Вы пробовали установить обработчик событий из javascript. Так что-то вроде

document.getElementById('mytextelement').onkeypress = keytest;
person Gerben    schedule 12.01.2011
comment
Будет ли это проблемой, связанной с BlackBerry? Вышеупомянутый сценарий работает, например, в Firefox "как есть". - person DA.; 12.01.2011
comment
@DA Я не думаю, что есть какая-либо спецификация, в которой указывается, что переменная event должна быть установлена ​​для встроенных обработчиков событий. Это работает в IE, потому что IE использовал window.event вместо передачи объекта события с функцией. Firefox добавил поведение, совместимое с IE. Я не уверен, сделал ли BB то же самое. - person Gerben; 12.01.2011
comment
Что ж ... Я попробую. Тем не менее, приложение, над которым мы работаем, выполняет весь JS как встроенные обработчики событий. Хорошо это или плохо, скорее всего, это та модель, над которой мне нужно работать. - person DA.; 13.01.2011
comment
Что ж, у меня есть этот выстрел безрезультатно. Точно такая же проблема. Я обновил приведенный выше сценарий, чтобы, надеюсь, предоставить больше информации. - person DA.; 13.01.2011

Попробуйте использовать e.keyCode вместо e.which

person Gerben    schedule 13.01.2011
comment
Пробовал и это. Тот же результат. Глупый BlackBerry! ;) - person DA.; 13.01.2011