角度6中的(keydown)事件具有多个按键绑定

时间:2018-10-05 12:36:58

标签: javascript html angular typescript angular6

我已经使用角度6中的(keydown)事件来绑定按键输入

因此,在输入“ Tab”和“ Enter”键时,我必须执行我的功能 并添加了一个event.prevent default

但是,当输入Shift + Tab时,也会阻止该事件

.html

<input type="text" [(ngModel)]="Result1 (keydown)="onKeydownMain($event)"  >

我不希望(keydown.shift.tab)事件分开。.

.ts

public onKeydownMain(event): void {
    if (event.key === "Enter" || event.key === "Tab") {
                event.preventDefault();
                   // My Functionality goes here
    }
}
  

但是问题是当按下Shift + Tab时,事件被触发并且功能继续,这是我不希望的。

我该怎么办

我只希望Shift + Tab在此输入上执行其默认功能。

2 个答案:

答案 0 :(得分:1)

您需要在shift条件下删除if,如下所示:

public onKeydownMain(event): void {
       if (!event.shiftKey && (event.key === "Enter" || event.key === "Tab")){
                event.preventDefault();
                   // My Functionality goes here
        }
    }

对于KeyboardEvent,您可以参考https://www.w3schools.com/jsref/obj_keyboardevent.asp

答案 1 :(得分:0)

请尝试避免在代码中使用shift键事件值16。 事件。用于显示关键事件值。

alert(event.which);
event.preventDefault();
if (event.keyCode!=16 && (event.keyCode === 13 || event.keyCode === 9 )) {
    alert("Pressed enter");
}