Программно изменить фокус в приложении Blackberry WebWorks

Я работаю над разработкой приложения WebWorks, которое использует методы "показать" и "скрыть" JQuery для динамического изменения содержимого страницы.

Приложение изначально загружает страницу с несколькими текстовыми вводами, а также с кнопкой гиперссылки в стиле JQuery. Фокус на стартовой странице определяется атрибутом x-blackberry-initialFocus.

Когда выбрана одна из кнопок гиперссылки, JQuery скрывает отображаемые текстовые поля и кнопки и показывает другой набор текстовых полей и кнопок гиперссылок. В этот момент навигация по фокусу прерывается, и кажется, что ни один элемент не имеет фокуса.

Я попытался добавить разрешения на использование blackberry.focus в мой config.xml и выполнить "blackberry.focus.setFocus('my_text_input_id'), ", но это не дало никакого эффекта.

Я гарантировал, что вызов setFocus будет выполнен после того, как желаемый элемент HTML был добавлен в DOM, поместив вызов setFocus в функцию обратного вызова метода JQuery show. Я также использовал JQuery для выбора нужного ввода текста перед вызовом setFocus, чтобы убедиться, что элемент существует.

Кроме того, я вызывал blackberry.focus.getFocus() до и после вызова setFocus(), но метод getFocus() возвращал пустую строку при каждом вызове.

Кто-нибудь знает, почему я не могу восстановить фокус?


person user821496    schedule 20.07.2011    source источник


Ответы (1)


У меня была точно такая же проблема.

Я обнаружил, что blackberry.focus.setFocus("element"); не имеет эффекта, но если я еще раз щелкну элемент, который делает эффект отображения/скрытия, код работает нормально.

Тогда решение использовать setTimeout:

setTimeout(function(){
   blackberry.focus.setFocus("show_menu");
},100);

Это работает очень хорошо.

Я надеюсь, что это поможет вам решить вашу проблему

person Victor Alejandro Herrera    schedule 27.10.2011