Comment puis-je désactiver YAHOO.util.KeyListener lorsqu'un élément d'entrée est activé?
-
03-07-2019 - |
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?
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);
}