Как отключить YAHOO.util.KeyListener, когда элемент ввода находится в фокусе? - PullRequest
1 голос
/ 01 октября 2008

У меня есть настройка MenuBar с YUI's MenuBar , и у меня есть YAHOO.util.KeyListener, прикрепленный к документу , чтобы получить быстрый доступ клавиатуры к меню и элементам подменю (например, 's', чтобы открыть меню настроек). Проблема состоит в том, что keylistener будет по-прежнему срабатывать, когда пользователь находится в элементе ввода. Например, пользователь может вводить soup в текстовое поле, а символ 's' вызовет открывание меню настройки.

Одним из решений было бы отключить keylistener , когда фокус находится на элементе ввода, и включить его при размытии. Как бы я поступил так? Есть ли лучшее решение?

1 Ответ

0 голосов
/ 01 октября 2008

Я благодарю вас за попытку предоставить сочетания клавиш, но имейте в виду, что реализация кроссплатформенности будет немного трудной. Если это возможно, я настоятельно рекомендую использовать ключи доступа в тегах <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);
}
...