Incluso si captura el evento keydown/keyup, esos son los únicos eventos que se activan con la tecla tab, aún necesita alguna forma de evitar que ocurra la acción predeterminada, pasando al siguiente elemento en el orden de tabulación.
En Firefox puede llamar al método preventDefault()
en el objeto de evento pasado a su controlador de eventos. En IE, debe devolver falso desde el identificador de evento. La biblioteca JQuery proporciona un método preventDefault en su objeto de evento que funciona en IE y 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>
Esta publicación recibió un indicador de moderador como "pertenece a meta.stackoverflow.com", pero tiene más de dos años, así que no la estoy migrando. –
No olvide verificar la ventana enfocada, y dejarla burbujear normalmente si no está en el editor textarea. – FlySwat