我正在使用Angular2开发一个Web应用程序,其中一个组件需要听键盘以检查是否有&#39; D&#39;键是按下的。这样做很好,除了它阻止我输入驻留在另一个组件中的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输入表单?
注意我故意遗漏了两个相关组件的角度代码,因为如果我不需要,我不想添加angular2标签,我的直觉说上面的代码是问题。但如果认为有必要,我会编辑帖子并添加角度代码和标记。
答案 0 :(得分:1)
event.preventDefault 的调用会停止该事件的默认行为,因此该字符不会显示在输入字段中。