Captura de la tecla TAB en un cuadro de texto

Me gustaría poder utilizar la tecla Tab dentro de un cuadro de texto para tabular cuatro espacios. Tal y como está ahora, la tecla Tab salta mi cursor a la siguiente entrada.

¿Existe algún JavaScript que capture la tecla Tab en el cuadro de texto antes de que salte a la interfaz de usuario?

Entiendo que algunos navegadores (por ejemplo FireFox) no lo permitan. ¿Qué tal un key-combo personalizado como Shift+Tab, o Ctrl+Q?

Prefiero que la sangría de tabulación no funcione a que se rompa la tabulación entre los elementos del formulario.

Si quieres aplicar sangría para introducir código en el cuadro Markdown, utiliza Ctrl+K (o ⌘K en Mac).

En términos de detener realmente la acción, jQuery (que Stack Overflow utiliza) detendrá el burbujeo de un evento cuando devuelvas false desde un callback de evento. Esto hace la vida más fácil para trabajar con múltiples navegadores.

Comentarios (0)

La respuesta anterior está bien, pero yo soy uno de esos tipos que están firmemente en contra de mezclar comportamiento con presentación (poner JavaScript en mi HTML) así que prefiero poner mi lógica de manejo de eventos en mis archivos JavaScript. Además, no todos los navegadores implementan los eventos (o e) de la misma manera. Es posible que desee hacer una comprobación antes de ejecutar cualquier lógica:

document.onkeydown = TabExample;

function TabExample(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var tabKey = 9;
  if(evt.keyCode == tabKey) {
    // do work
  }
}
Comentarios (0)

Yo desaconsejaría cambiar el comportamiento por defecto de una tecla. Hago todo lo posible sin tocar el ratón, así que si haces que mi tecla de tabulación no se mueva al siguiente campo de un formulario me enfadaré mucho.

Sin embargo, un atajo de teclado podría ser útil, especialmente con bloques de código grandes y anidados. Shift-TAB es una mala opción porque normalmente me lleva al campo anterior de un formulario. ¿Quizás un nuevo botón en el editor de WMD para insertar un código-TAB, con un atajo de teclado, sería posible?

Comentarios (2)