Как отключить YAHOO.util.KeyListener, когда элемент ввода находится в фокусе?
У меня есть настройка MenuBar с виджетом MenuBar YUI, и у меня есть YAHOO.util.KeyListener
прикрепленный к документу, чтобы получить быстрый доступ с клавиатуры к меню и пунктам подменю (например, "s", чтобы открыть меню "Настройка"). Проблема в том, что список ключей по- прежнему срабатывает, когда пользователь находится в элементе ввода. Например, пользователь может вводить суп в текстовое поле, а символ 's' откроет меню настройки.
Одним из решений было бы отключить список ключей, когда фокус находится на элементе ввода, и включить его при размытии. Как бы я поступил так? Есть ли лучшее решение?
1 ответ
Я благодарю вас за попытку предоставить сочетания клавиш, но имейте в виду, что реализация кроссплатформенности будет немного болезненной. Если это возможно, я настоятельно рекомендую использовать ключи доступа на <a>
теги.
Если вы все еще собираетесь, я думаю, accesskey
не будет работать для вас. Я предполагаю, что вы прочитали соответствующий учебник YUI.
Если blur
а также focus
действительно правильный путь, я бы использовал что-то вроде
YAHOO.util.Event.onDOMReady(init);
function init() {
// set up the keyboard listeners
setUpExceptionsToKeyboardShortcuts();
}
function disableShortcuts() {
// Do what you've got to do
}
function enableShortcuts() {
// Do what you've got to do
}
function setUpExceptionsToKeyboardShortcuts() {
var focusable = document.getElementsByTagName('input');
focusable = focusable.concat(document.getElementsByTagName('select'));
focusable = focusable.concat(document.getElementsByTagName('textarea'));
YAHOO.util.Event.addListener(focusable, 'focus', disableShortcuts);
YAHOO.util.Event.addListener(focusable, 'blur', ensableShortcuts);
}