Incluso si captura el evento keydown/ keyup, esos son los únicos eventos que dispara la tecla de tabulación, todavía necesita alguna forma de evitar que ocurra la acción predeterminada, pasar al siguiente elemento en el orden de tabulación.
En Firefox, puede llamar al preventDefault()método en el objeto de evento pasado a su controlador de eventos. En IE, debe devolver falso desde el identificador del evento. La biblioteca JQuery proporciona un preventDefaultmétodo 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>