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

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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 206
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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);
}

Ссылка на ключи доступа была отличной, я совсем забыл о них. К сожалению, в этой ситуации их недостаточно.

user13200 01.10.2008 21:40

Другие вопросы по теме