Como faço para ter YAHOO.util.KeyListener desativada quando um elemento de entrada é focado?
-
03-07-2019 - |
Pergunta
Eu tenho uma configuração MenuBar com do YUI MenuBar widget, e eu tenho um YAHOO.util.KeyListener
anexado a documento para obter o acesso de teclado rápido para os menus e itens do sub-menu (por exemplo, 's' para abrir o menu de configuração). O problema é que o KeyListener ainda vai disparar quando um usuário está em um elemento de entrada. Por exemplo, um usuário pode estar digitando sopa em um campo de texto, e o 's' personagem vai fazer com que o menu Configuração para abrir pop.
Uma solução seria para desativar o KeyListener quando o foco está em um elemento de entrada e ativá-lo no borrão. Como eu iria fazer isso? Existe uma solução melhor?
Solução
Eu recomendo que você para tentar fornecer atalhos de teclado, mas esteja ciente de que este será um pouco de dor para implementar multi-plataforma. Se for possível, eu recomendo fortemente utilizando teclas de acesso em tags <a>
.
Se você ainda vai, eu acho accesskey
não vai funcionar para você. Eu vou assumir que você leu o YUI relevante tutorial .
Se blur
e focus
são realmente o caminho certo para ir, eu usaria algo como
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);
}