Domanda

Ho un'impostazione MenuBar con Widget MenuBar di YUI e ho un YAHOO.util.KeyListener allegato al documento per ottenere un rapido accesso da tastiera ai menu e alle voci dei sottomenu (ad es. "S" per aprire il menu di configurazione). Il problema è che il keylistener verrà comunque attivato quando un utente si trova in un elemento di input. Ad esempio, un utente potrebbe digitare brodo in un campo di testo e il carattere "s" farà aprire il menu di configurazione.

Una soluzione sarebbe disabilitare il keylistener quando lo stato attivo è su un elemento di input e abilitarlo su sfocatura. Come farei per fare questo? C'è una soluzione migliore?

È stato utile?

Soluzione

Ti lodo per aver provato a fornire scorciatoie da tastiera, ma tieni presente che implementare multipiattaforma sarà un po 'complicato. Se possibile, ti consiglio vivamente di utilizzare chiavi di accesso su < a > .

Se stai ancora andando, suppongo che accesskey non funzionerà per te. Presumo che tu abbia letto il tutorial YUI pertinente .

Se blur e focus sono davvero la strada giusta da percorrere, userei qualcosa come

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top