javascript - tastiera - tasto tab pc portatile




Cattura del tasto TAB nella casella di testo (4)

Anche se acquisisci l'evento keydown / keyup, questi sono gli unici eventi attivati ​​dal tasto tab, hai ancora bisogno di un modo per impedire il verificarsi dell'azione predefinita, passando all'elemento successivo nell'ordine di tabulazione.

In Firefox è possibile chiamare il metodo preventDefault() sull'oggetto evento passato al gestore eventi. In IE, devi restituire false dall'handle dell'evento. La libreria JQuery fornisce un metodo preventDefault sul suo oggetto evento che funziona in IE e FF.

<body>
<input type="text" id="myInput">
<script type="text/javascript">
    var myInput = document.getElementById("myInput");
    if(myInput.addEventListener ) {
        myInput.addEventListener('keydown',this.keyHandler,false);
    } else if(myInput.attachEvent ) {
        myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
    }

    function keyHandler(e) {
        var TABKEY = 9;
        if(e.keyCode == TABKEY) {
            this.value += "    ";
            if(e.preventDefault) {
                e.preventDefault();
            }
            return false;
        }
    }
</script>
</body>

Mi piacerebbe essere in grado di usare il tasto Tab all'interno di una casella di testo per passare su quattro spazi. Così com'è ora, il tasto Tab salta il cursore sull'ingresso successivo.

Esiste qualche codice JavaScript che catturerà il tasto Tab nella casella di testo prima che raggiunga l'interfaccia utente?

Capisco che alcuni browser (es. FireFox) potrebbero non permetterlo. Che ne dici di una combinazione di tasti personalizzati come Maiusc + Tab o Ctrl + Q ?


In Chrome sul Mac, alt-tab inserisce un carattere di tabulazione in un campo <textarea> .

Eccone uno: Wee!


Preferirei che l'indentazione della tabulazione non funzionasse piuttosto che rompere le tabulazioni tra gli elementi del modulo.

Se vuoi far rientrare il codice nella casella Markdown, usa Ctrl + K (o ⌘K su un Mac).

In termini di interruzione effettiva dell'azione, jQuery (che utilizza Overflow dello stack) interromperà un evento da bubbling quando si restituisce false da un callback di un evento. Ciò rende la vita più facile per lavorare con più browser.


Vorrei sconsigliare di cambiare il comportamento predefinito di una chiave. Faccio il più possibile senza toccare il mouse, quindi se si rende il mio tasto Tab non si sposta al campo successivo su un modulo sarò molto aggravato.

Un tasto di scelta rapida potrebbe tuttavia essere utile, specialmente con blocchi di codice di grandi dimensioni e nidificazione. Shift-TAB è una cattiva opzione perché normalmente mi porta al campo precedente di un modulo. Forse un nuovo pulsante sull'editor WMD per inserire un codice-TAB, con un tasto di scelta rapida, sarebbe possibile?





user-interface