Wie habe ich YAHOO.util.KeyListener deaktiviert, wenn ein Eingabeelement fokussiert ist?
-
03-07-2019 - |
Frage
Ich habe eine MenuBar Setup mit YUI MenuBar Widget, und ich habe ein YAHOO.util.KeyListener
angebracht zu Dokument schnelle Tastatur Zugriff auf die Menüs und Untermenüpunkte (zB ‚s‘ das Setup-Menü zu öffnen) zu erhalten. Das Problem ist, dass die keyListener immer noch ausgelöst, wenn ein Benutzer in einem Eingabeelement ist. Zum Beispiel könnte die Eingabe ein Benutzer Suppe in ein Textfeld und die ‚s‘ Zeichen das Setup-Menü verursachen geöffnet Pop.
Eine Lösung wäre, deaktivieren Sie die keyListener , wenn der Fokus auf ein Eingabeelement ist, und es auf Blur ermöglichen. Wie würde ich mich über das tun dies? Gibt es eine bessere Lösung?
Lösung
Ich lobe Sie versuchen, Tastenkombinationen zur Verfügung zu stellen, aber bewusst sein, dass dies ein wenig nervig sein Cross-Plattform zu implementieren. Wenn es machbar ist, empfehle ich dringend die Verwendung Zugriffstasten auf <a>
Tags.
Wenn Sie noch gehen, ich denke, accesskey
wird für Dich nicht funktionieren. Ich nehme an, Sie gelesen haben das relevante YUI Tutorial .
Wenn blur
und focus
ist wirklich der richtige Weg zu gehen, ich so etwas wie
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);
}