2008-09-30 45 views
1

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

当焦点位于输入元素上并在模糊上启用时,一种解决方案是禁用keylistener。我会如何去做这件事?有更好的解决方案吗?

回答

0

我推荐您尝试提供键盘快捷键,但请注意,实现跨平台会有点痛苦。如果可行,我强烈建议在<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); 
} 
+0

访问键参考是伟大的,我完全忘了他们。不幸的是,他们对于这种情况不够好。 – user13200 2008-10-01 17:40:55