javascript - Typescript 键盘监听器阻止在 HTML 输入表单中输入内容

标签 javascript typescript keyboard

我正在使用 Angular2 开发一个 Web 应用程序,其中一个组件需要监听键盘来检查是否按下了“D”键。这工作正常,只是它阻止我输入 HTML <input>它驻留在另一个组件中。我猜测这是由键盘监听器类中的某些代码引起的,但我不确定在哪里。

这是完整的监听器类:

export class Keyboard {

    private keyboard_d;

    constructor(){
        this.keyboard_d = Keyboard.keyboard(68);
    }

    static keyboard(keyCode){
        var key = {
            code: keyCode,
            isDown: false,
            isUp: true,
            press: undefined,
            release: undefined,
            downHandler: function(event){
                if (event.keyCode === key.code) {
                    if (key.isUp && key.press) key.press();
                    key.isDown = true;
                    key.isUp = false;
                }
                event.preventDefault();
            },
            upHandler: function(event) {
                if (event.keyCode === key.code) {
                    if (key.isDown && key.release) key.release();
                        key.isDown = false;
                        key.isUp = true;
                    }
                    event.preventDefault();
                }
            }

        //Attach event listeners...
        window.addEventListener(
            "keydown", key.downHandler.bind(key), false
        );
        window.addEventListener(
            "keyup", key.upHandler.bind(key), false
        );
        return key;
    }

    //Returns true if the D key is pressed down, false if it is not.
    public isDpressed(){
        return this.keyboard_d.isDown;
    }
}

此类在 Angular2 组件中的使用如下:

var keyboard_listener = new Keyboard(); //create
var dPressed : boolean = keyboard_listener.isDPressed();

这段代码中的什么地方阻止我在 HTML 输入表单中输入内容?

注意,我故意省略了两个相关组件的 Angular 代码,因为如果不需要,我不想添加 angular2 标签,我的直觉表明上面的代码是问题所在。但如果认为有必要,我将编辑帖子并添加 Angular 代码和标签。

最佳答案

调用 event.preventDefault 会停止该事件的默认行为,因此该字符不会显示在输入字段中。

关于javascript - Typescript 键盘监听器阻止在 HTML 输入表单中输入内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41797248/

相关文章:

c++ - 如何判断是否在启用 NumLock 的情况下在小键盘输入上按下了 shift?或者至少获得 NumLock 状态?

iphone - 这是UIKit错误吗?

javascript - 如何编写 Jasmine 测试用例来检查单击事件中的 Toggle 类功能

typescript - typeScript 中的 systemjs 模块 : XHR error

android - 手机锁定时键盘不显示并且 Activity 禁用键盘保护

typescript - 将数组值提取为 Typescript 类型

javascript - 解析 D3 中堆积面积图的数组

javascript - HTML 5 Canvas 和 getElementByID

javascript - 奇怪的 Backbone 通知

javascript - 多次打开弹出窗口无法关闭