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?

Foi útil?

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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top