Javascript 从(按键)角度获取按下的键2
在Angular 2中使用(keypress)时,是否可以找出按下了哪个键 例如Javascript 从(按键)角度获取按下的键2,javascript,angular,Javascript,Angular,在Angular 2中使用(keypress)时,是否可以找出按下了哪个键 例如 公共事件处理程序(){ //一些代码 控制台日志(按键); } 编辑:似乎我的命名约定有点不一致。我不是指AngularJS2,我是指AngularJS2.0和typescript 将$event传递给事件处理程序。$event是一个DOM 事件处理程序(事件){ 日志(event,event.keyCode,event.keyIdentifier); } 如果知道需要哪个KeyboardEvent属性,
公共事件处理程序(){
//一些代码
控制台日志(按键);
}
编辑:似乎我的命名约定有点不一致。我不是指AngularJS2,我是指AngularJS2.0和typescript 将
$event
传递给事件处理程序。$event
是一个DOM
事件处理程序(事件){
日志(event,event.keyCode,event.keyIdentifier);
}
如果知道需要哪个KeyboardEvent属性,可以将其传递到事件处理程序:
<input type=text (keypress)="eventHandler($event.keyCode)">
eventHandler(keyCode) {...}
eventHandler(键码){…}
@组件({
选择器:'key-up3',
模板:`
{{value}}
`
})
导出类KeyUpComponent\u v3{
值=“”;
onEnter(value:string){this.value=value;}
}
或者像这样使用
<input #box (keyup.enter)="onSubmit(form.value)">
<form [formGroup]="form" (ngSubmit)="onSubmit(form.value)">
根据对答案的评论:
这不会检测到所有事件。例如,不能使用箭头键或转义键。但您可以使用(键控)获取所有这些 获取所有事件(backspace和delete)或任何键的最佳解决方案,只需使用(输入)
eventHandler(键码){…}
2020更新:
event.keyCode
已被弃用,您应该改用event.code
(只需先检查浏览器兼容性)
eventHandler(事件:KeyboardEvent){
console.log('按下的键是:',事件代码);
}
event.keyCode的弃用:
event.code
浏览器兼容性:
是否使用angularjs?这不会检测所有事件。例如,不能使用箭头键或转义键。但是您可以使用(keydown)来获取所有这些参数。event.key似乎是现在要使用的参数,它给出了一个类似“0”、“a”、“ArrowLeft”等字符串。请使用event.keyCode劝阻。函数AvoidSpace(event:any){var k=event?event.which:window.event.keyCode;if(k==32)返回false;}上面是我用来阻止用户在输入框中输入空格的代码。我正在angular2中实现这一点。我在keycode上得到一个错误,说“类型“Event.any”上不存在属性“keycode”。我该怎么办?如果你想检测退格..等等,请使用向下键谢谢你,马克,请给出另一个准确、简洁的答案。您对StackOverflow的贡献一次又一次地帮助了我。很好的解决方案。不需要检查组件中的关键代码等。我打算写相同的答案。我在这里找到了这个用法。
<input type=text (keypress)="eventHandler($event.keyCode)">
eventHandler(keyCode) {...}
@Component({
selector: 'key-up3',
template: `
<input #box (keyup.enter)="onEnter(box.value)">
<p>{{value}}</p>
`
})
export class KeyUpComponent_v3 {
value = '';
onEnter(value: string) { this.value = value; }
}
<input #box (keyup.enter)="onSubmit(form.value)">
<form [formGroup]="form" (ngSubmit)="onSubmit(form.value)">
<input type=text (input)="eventHandler($event.keyCode)">
eventHandler(keyCode) {...}
<input type=text (keypress)="eventHandler($event)">
eventHandler(event: KeyboardEvent) {
console.log('Key pressed is:', event.code);
}