当输入元素成为焦点时,如何禁用YAHOO.util.KeyListener?
时间:2020-03-06 14:57:09 来源:igfitidea点击:
我有一个带有YUI的MenuBar小部件的MenuBar设置,还有一个连接到文档的YAHOO.util.KeyListener,可以通过键盘快速访问菜单和子菜单项(例如,打开设置菜单的's')。问题在于,当用户位于输入元素中时,键侦听器仍将触发。例如,用户可能在文本字段中键入汤,并且" s"字符将导致"设置"菜单弹出。
一种解决方案是,当焦点位于输入元素上时禁用键侦听器,并在模糊时启用它。我将如何去做呢?有更好的解决方案吗?
解决方案
我赞扬我们尝试提供键盘快捷键,但是要意识到,实现跨平台会有些痛苦。如果可行,我强烈建议在<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); }