Фокус на Selectable

24 views
Skip to first unread message

Vic Khomyackov

unread,
Apr 25, 2012, 10:01:13 AM4/25/12
to right...@googlegroups.com
Может ли Selectable работать с фокусом как обычные поля ввода? Я имею в виду получение/потерю фокуса как по нажатию на клавиатуре Tab/Shift+Tab, так и из JavaScript с помощью #focus()/#blur().

Или я не нашёл этого в документации, или это не предусмотрено в принципе? Насколько я понимаю, в похожих виджетах в других фреймворках это решается добавлением в разметку элементов <a>, которые могут иметь фокус.

P.S. Более общий вопрос - управление Selectable с клавиатуры (фокус/выбор значений/отметка).

Nikolay Nemshilov

unread,
Apr 25, 2012, 10:31:46 AM4/25/12
to right...@googlegroups.com
Привет,

Нет, такой функции на данный момент нет. Можете попробовать добавить ее самостоятельно, если получится красиво, с удовольствием сделаю merge :)


--
Thanks,
Nikolay

Vic Khomyackov

unread,
Apr 25, 2012, 12:24:15 PM4/25/12
to right...@googlegroups.com
такой функции на данный момент нет. Можете попробовать добавить ее самостоятельно

Пока у меня больше вопросов. Как быть с уже существующими элементами, которые оборачиваются после загрузки страницы? Что делать с опциями, которые добавляются из скрипта?

P.S. Какой смысл в right-selectable-src.js в выражении
        if ('$listeners' in options) {
          options.$listeners = options.$listeners; 
}
 

Nikolay Nemshilov

unread,
Apr 26, 2012, 2:51:26 AM4/26/12
to right...@googlegroups.com
Пока у меня больше вопросов. Как быть с уже существующими элементами, которые оборачиваются после загрузки страницы? Что делать с опциями, которые добавляются из скрипта?

P.S. Какой смысл в right-selectable-src.js в выражении
        if ('$listeners' in options) {
          options.$listeners = options.$listeners; 
}
 

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

Касательно новых опций, сейчас уже не помню точно, но скорее всего нужно будет инициализировать виджет заново. Посмотрите исходники, там должен быть отдельный метод для сборки виджета, возможно его можно будет просто еще раз вызвать на том же самом объекте.

Avol

unread,
Apr 26, 2012, 3:52:13 AM4/26/12
to right...@googlegroups.com
Можно не городить элементов <a>, а просто назначить тегу атрибут tabindex="0" (при значении 0 берётся приоритет обычным образом по-порядку).

среда, 25 апреля 2012 г., 18:01:13 UTC+4 пользователь Vic Khomyackov написал:

Nikolay Nemshilov

unread,
Apr 26, 2012, 4:21:13 AM4/26/12
to right...@googlegroups.com
Не уверен что tabindex можно использовать с UL элементами (то что внутри Selectable). И потом, получить фокус - полдела, еще нужно обработать вручную управление с клавиатуры, т.к. Selectable - это просто UL элемент

Vic Khomyackov

unread,
Apr 26, 2012, 6:36:35 AM4/26/12
to right...@googlegroups.com
Можно не городить элементов <a>, а просто назначить тегу атрибут tabindex="0" (при значении 0 берётся приоритет обычным образом по-порядку).
Попробовал tabindex на тегах li - работает (IE6-9, FF11, Cr18) - получает фокус и по tab и через #focus(). Прикольно. Это упрощает дело.

Vic Khomyackov

unread,
Apr 26, 2012, 6:39:20 AM4/26/12
to right...@googlegroups.com
Какой смысл в right-selectable-src.js в выражении
        if ('$listeners' in options) {
          options.$listeners = options.$listeners; 
}
 
Это на случай когда оригинальный элемент был уже однажды обернут другой оберткой до инициализации виджета. Просто копируются слушатели событий
Копируются сами в себя?

Avol

unread,
Apr 27, 2012, 4:51:56 AM4/27/12
to right...@googlegroups.com
Как уже отмечено, это работает.
Вот например источник: http://snook.ca/archives/accessibility_and_usability/elements_focusable_with_tabindex
Как пишется по приведённой ниже ссылке, при значении «-1» элемент может принимать фокус только программно через JavaScript; при значении «0» элемент сможет принимать фокус с клавиатуры, и его порядок будет соответствовать позиции в документе; при значении большем нуля, задаётся его порядковый приоритет, где 1 — наивысшей номер.

Ну а управление с клавиатуры — вроде просто обработчик нажатия клавиш и, возможно, обработчики получения/потери фокуса, которые этот обработчик могут вешать/снимать или просто проверять условие.

четверг, 26 апреля 2012 г., 12:21:13 UTC+4 пользователь MadRabbit написал:

Nikolay Nemshilov

unread,
Apr 27, 2012, 4:58:11 AM4/27/12
to right...@googlegroups.com
Интересно. я не знал что фокус можно помещать на какие-либо другие элементы кроме полей ввода. Наверное осталось со времен ИЕ6 :)

Vic Khomyackov

unread,
Apr 28, 2012, 8:39:46 AM4/28/12
to right...@googlegroups.com
 осталось со времен ИЕ6 :)
в IE6 тоже работает ;) 
Reply all
Reply to author
Forward
0 new messages