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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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