Question

J'ai une configuration MenuBar avec le widget de la barre de menus de YUI, et j'ai un code < > YAHOO.util.KeyListener attaché au document pour obtenir un accès rapide au clavier aux menus et aux éléments de sous-menu (par exemple, 's' pour ouvrir le menu de configuration). Le problème est que keylistener continuera à se déclencher lorsqu'un utilisateur se trouve dans un élément d'entrée. Par exemple, un utilisateur peut taper soup dans un champ de texte et le caractère "s" entraîne l'ouverture du menu Configuration.

Une solution serait de désactiver keylistener lorsque le focus est sur un élément d'entrée et de l'activer sur le flou. Comment pourrais-je m'y prendre? Y a-t-il une meilleure solution?

Était-ce utile?

La solution

Je vous félicite d'avoir essayé de fournir des raccourcis clavier, mais sachez que la mise en œuvre multi-plateforme sera un peu pénible. Si cela est réalisable, je vous recommande vivement d'utiliser les clés d'accès sur les balises < a > .

Si vous y allez encore, j'imagine que accesskey ne fonctionnera pas pour vous. Je suppose que vous avez lu le le didacticiel YUI pertinent .

Si flou et focus sont vraiment la bonne façon de faire, je voudrais utiliser quelque chose comme

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top