Angular2 中的 (keyup) 都有哪些选项?

Posted

技术标签:

【中文标题】Angular2 中的 (keyup) 都有哪些选项?【英文标题】:What are the options for (keyup) in Angular2?Angular2 中的 (keyup) 有哪些选项? 【发布时间】:2015-11-16 07:37:12 【问题描述】:

enter 键被释放时,下面的效果很好。 除了keyup.enterkeyup 还有哪些其他选项?

<input #inputstring (keyup.enter)="doSomething(inputstring.value)"/>

【问题讨论】:

也许这可以给你一个提示github.com/angular/angular/issues/523,不过它已经很老了。 【参考方案1】:

这些是当前在测试中记录的选项:ctrl、shift、enter 和 escape。以下是一些有效的键绑定示例:

keydown.control.shift.enter
keydown.control.esc

您可以在没有官方文档的情况下跟踪此here,但它们应该很快就会发布。

【讨论】:

哇,这个答案是在 Angular 的第 20 个 Alpha 版时给出的,它今天仍然有效。 相关文档angular.io/guide/user-input#key-event-filtering-with-keyenter New link for Angular 9 这在今天仍然适用于 Angular 12,但需要注意的是,对于多键组合,顺序很重要keydown.shift.enter 有效,但 keydown.enter.shift 无效。【参考方案2】:

我正在寻找一种绑定到多个关键事件的方法 - 特别是 Shift+Enter - 但在网上找不到任何好的资源。但是在记录 keydown 绑定之后

<textarea (keydown)="onKeydownEvent($event)"></textarea>

我发现键盘事件提供了检测 Shift+Enter 所需的所有信息。原来$event 返回了一个相当详细的KeyboardEvent。

onKeydownEvent(event: KeyboardEvent): void 
   if (event.keyCode === 13 && event.shiftKey) 
       // On 'Shift+Enter' do this.......
   

还有 CtrlKey、AltKey 和 MetaKey(即 Mac 上的 Command 键)的标志。

不需要 KeyEventsPlugin、JQuery 或纯 JS 绑定。

【讨论】:

【参考方案3】:

今天遇到了同样的问题。

这些文档记录不充分,存在一个未解决的问题。

一些用于keyup,比如空格:

<input (keyup.space)="doSomething()">
<input (keyup.spacebar)="doSomething()">  

一些用于 keydown (也可能适用于 keyup):

<input (keydown.enter)="...">
<input (keydown.a)="...">
<input (keydown.esc)="...">
<input (keydown.alt)="...">
<input (keydown.shift.esc)="...">
<input (keydown.shift.arrowdown)="...">
<input (keydown.f4)="...">

以上内容均来自以下链接:

https://github.com/angular/angular/issues/18870https://github.com/angular/angular/issues/8273https://github.com/angular/angular/blob/master/packages/platform-browser/src/dom/events/key_events.tshttps://alligator.io/angular/binding-keyup-keydown-events/

【讨论】:

【参考方案4】:

这个文件给你更多的提示,比如keydown.up不工作你需要keydown.arrowup:

https://github.com/angular/angular/blob/630d93150a58581a0d474ebf1befb5d09b6813c5/modules/angular2/src/platform/browser/browser_adapter.dart

【讨论】:

【参考方案5】:

你可以像这样添加keyup事件

template: `
  <input (keyup)="onKey($event)">
  <p>values</p>
`

在组件中,代码如下所示

export class KeyUpComponent_v1 
  values = '';

  onKey(event:any)  // without type info
    this.values += event.target.value + ' | ';
  

【讨论】:

这不适用于数字。如果我在输入字段中键入数字,则不会触发 keyup 事件。我们能做些什么呢?【参考方案6】:

keyCode 已弃用,您可以在KeyboardEvent 中使用key 属性

<textarea (keydown)=onKeydownEvent($event)></textarea>

打字稿:

onKeydownEvent($event: KeyboardEvent)

    // you can use the following for checkig enter key pressed or not
    if ($event.key === 'Enter') 
      console.log($event.key); // Enter
    


    if ($event.key === 'Enter' && event.shiftKey) 
           //This is 'Shift+Enter' 
    

【讨论】:

【参考方案7】:

如果您的 keyup 事件在 CTRLSHIFTENTERESC 括号之外,只需使用 @ Md Ayub Ali Sarker 的指南。角度文档https://angular.io/docs/ts/latest/guide/user-input.html 中提到的唯一 keyup 伪事件是 ENTER 键。目前还没有数字键和字母的 keyup 伪事件。

【讨论】:

对不起,罗伯特。使用该链接导航到 Angular 文档时我没有任何问题。它有效。 是的,现在可以使用了。可能问题就在我这边。对不起。【参考方案8】:

一个喜欢的事件

(keydown)="$event.keyCode != 32 ? $event:$event.preventDefault()"

【讨论】:

以上是关于Angular2 中的 (keyup) 都有哪些选项?的主要内容,如果未能解决你的问题,请参考以下文章

前端常用的框架都有哪些?

前端常用的框架都有哪些?

Angular2中的共享单选按钮组件

如何正确地将数据绑定到 Angular2 中的单选按钮?

Angular2,Ionic2:如何使用 ngModel 对嵌套 *ngfor 中的单选按钮进行 2way 绑定?

前端都有啥框架 其特点