我有一个带有YUI's MenuBar小部件的MenuBar设置,并且我有一个YAHOO.util.KeyListener附加到文档上,可以快速键盘访问菜单和子菜单项(例如,“ s”以打开“设置”菜单)。问题在于,当用户位于输入元素中时,键侦听器仍将触发。例如,用户可能在文本字段中键入汤,并且“ s”字符将导致“设置”菜单弹出。

一种解决方案是,当焦点位于输入元素上时禁用关键侦听器,并在模糊时启用它。我将如何去做呢?有更好的解决方案吗?

最佳答案

我赞扬您尝试提供键盘快捷键,但是要意识到,实现跨平台会有些痛苦。如果可行,我强烈建议在<a>标记上使用access keys

如果您仍然要走,我想accesskey将对您不起作用。我假设您已阅读the relevant YUI tutorial

如果blurfocus确实是正确的方法,我会使用类似

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);
}

关于javascript - 当输入元素成为焦点时,如何禁用YAHOO.util.KeyListener?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/155445/

10-10 07:08