【问题标题】:How do I have YAHOO.util.KeyListener disabled when an input element is focused?如何在输入元素获得焦点时禁用 YAHOO.util.KeyListener?
【发布时间】:2010-09-14 09:39:37
【问题描述】:

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

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

【问题讨论】:

    标签: javascript keyboard yui shortcuts keylistener


    【解决方案1】:

    我赞扬您尝试提供键盘快捷键,但请注意,实现跨平台会有点麻烦。如果可行,我强烈建议在<a> 标签上使用access keys。

    如果你还要继续,我猜accesskey 不适合你。我假设你已经阅读了the relevant YUI tutorial。

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

    【讨论】:

    • 对访问密钥的引用很棒,我完全忘记了它们。不幸的是,它们在这种情况下还不够好。
    猜你喜欢
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多