javascript - Enlace múltiple de teclas en el evento (keydown) en angular 6
He utilizado el evento (keydown) en Angular 6 para enlazar entradas de teclado
Entonces, al presionar la tecla 'Tab' y 'Enter', tengo que realizar mi funcionalidad y añadí un event.preventDefault
Pero cuando se presiona Shift + Tab también se está impidiendo el evento
.html
<input type="text" [(ngModel)]="Result1 (keydown)="onKeydownMain($event)" >
No quiero el evento (keydown.shift.tab) separado..
.ts
public onKeydownMain(event): void {
if (event.key === "Enter" || event.key === "Tab") {
event.preventDefault();
// My Functionality goes here
}
}
Pero el problema es que cuando se presiona Shift + Tab, se dispara el evento y la funcionalidad continúa, lo cual no quiero.
¿Cómo puedo ir a esto?
Solo quiero que Shift + Tab realice su funcionalidad predeterminada en esta entrada.
Respuesta #1
Necesitas eliminar el shift en la condición if de esta manera:
public onKeydownMain(event): void {
if (!event.shiftKey && (event.key === "Enter" || event.key === "Tab")){
event.preventDefault();
// My Functionality goes here
}
}
Puedes consultar https://www.w3schools.com/jsref/obj_keyboardevent.asp para KeyboardEvent
Respuesta #2
Intenta evitar el valor del evento de la tecla Shift 16 en tu código. event.which se utiliza para mostrar el valor del evento de la tecla.
alert(event.which);
event.preventDefault();
if (event.keyCode!=16 && (event.keyCode === 13 || event.keyCode === 9 )) {
alert("Pressed enter");
}
