当输入元素被聚焦时,如何禁用YAHOO.util.KeyListener?
-
03-07-2019 - |
题
我有一个带有 YUI的MenuBar 小部件的MenuBar设置,我有一个 YAHOO.util.KeyListener
附加到文档以快速键盘访问菜单和子菜单项(例如's'以打开设置菜单)。问题是当用户在输入元素中时, keylistener 仍将触发。例如,用户可能在文本字段中键入 soup ,而's'字符将导致设置菜单弹出。
一种解决方案是在焦点位于输入元素上时禁用 keylistener ,并在模糊时启用它。我该怎么做呢?有更好的解决方案吗?
解决方案
我赞扬您尝试提供键盘快捷键,但请注意,实现跨平台将会有点痛苦。如果可行,我强烈建议使用访问密钥 on < 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);
}
不隶属于 StackOverflow