Esto podría ser un poco tarde, pero la combinación de la respuesta de @ EvgueniNaverniouk y comentario @K ._ 's (en la respuesta de @ Joshua_Pendo), se determina que se debe utilizar onkeydown
y el más reciente en lugar de event.key
event.keyCode
. Lo que event.key
hace es devolver el nombre de la clave en lugar del código. Por ejemplo, la clave tab
se devolverá como "Pestaña" (Esto distingue entre mayúsculas y minúsculas). Aquí está el código de trabajo terminado:
function checkForTab(event) {
if (event.key == "Tab") {
event.preventDefault();
}
else {
//whatever stuff if not Tab
}
}
document.getElementById("element").onkeydown = checkForTab(event);
function checkForTab(event) {
\t if (event.key == "Tab") {
\t \t event.preventDefault();
document.getElementById('element').value += " Also notice this text appears every time you press tab!";
\t }
\t else {
\t \t //whatever stuff if not Tab
\t }
}
document.getElementById('element').onkeydown = checkForTab;
//Trick is to use keydown and use event.key instead of keyCode
<textarea id="element" style="width: 300px; height: 100px;">Press tab key here, you'll see default action doesn't occur!</textarea>
Ejecutar el fragmento de código anterior para ver un ejemplo de lo que quiero decir. Ahora puede usar un código como este para reemplazar la acción predeterminada de Tab con la acción que agrega espacios a un área de texto. Nota: el motivo por el que utilizo .key
en lugar de .keyCode
es porque .keyCode
ahora está obsoleto como se menciona en @ K._. Espero que esto ayude!
estoy haciendo preventDefault pero simplemente no trabajo :(lo estoy haciendo en una celda de la tabla – Shaheer
tienes una examepl solamente, no está seguro de lo que está tratando de hacer con una celda de la tabla, o qué sucede con él al presionar tab? –
estoy haciendo una cuadrícula editable, cuando el usuario hace clic en una celda de la tabla y presiona pestaña, la siguiente celda debe resaltarse, esto funciona bien, pero Chrome también establece el foco en otros elementos y con cada pestaña, Chrome mueve centrarse en lo siguiente, no quiero que eso suceda – Shaheer