Как мне отключить YAHOO.util.KeyListener, когда элемент ввода сфокусирован?

StackOverflow https://stackoverflow.com/questions/155445

Вопрос

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

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

Это было полезно?

Решение

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