1

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

一种解决方案是在焦点位于输入元素上时禁用keylistener ,并在模糊时启用它。我该怎么做呢?有更好的解决方案吗?

4

1 回答 1

0

我赞扬您尝试提供键盘快捷键,但请注意,实现跨平台会有点痛苦。如果可行,我强烈建议在标签上使用访问键。<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);
}
于 2008-10-01T08:45:13.030 回答