键盘事件未调度

时间:2019-04-02 18:06:15

标签: javascript angular keyboard-events

我在有角度的应用程序中使用了materialize-css的芯片组件。要创建筹码,我必须按Enter键。但在移动设备中,没有Enter键。

因此,我在芯片的输入元素上添加了textInput事件,如果用户按逗号,它将调度enter键事件。

__element.addEventListener('textInput', function (__event) {
      const keyCode = __event.data.charCodeAt(0);
      const COMMA_KEY_CODE = 44;
      if (keyCode == COMMA_KEY_CODE) {
        __event.preventDefault();
        __event.currentTarget.dispatchEvent(new KeyboardEvent('keydown', { key: "Enter" }));
      }
});

按逗号后,我得到了事件,但没有调度enter事件。

但是,如果我使用以下行来调度输入关键事件

__event.currentTarget.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 13 }));

它显示

Argument of type '{ keyCode: number; }' is not assignable to parameter of type 'KeyboardEventInit'.
  Object literal may only specify known properties, and 'keyCode' does not exist in type 'KeyboardEventInit'.

但是如果我直接在控制台上运行相同的代码,就可以工作。

在GitHub上的问题:https://github.com/Dogfalo/materialize/issues/5722

1 个答案:

答案 0 :(得分:0)

这可以在Angular中实现,方法是将keydown事件绑定到您的输入,并在事件中添加enter键名,例如

<input (keydown.enter)="onKeydown($event)">

事件的定义可能是

onKeydown(event) {
    //This code will run only when an enter key is pressed
}
相关问题