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?

War es hilfreich?

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

verwenden würde,
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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top