【问题标题】: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)"/>

【问题讨论】:

标签: javascript html onkeyup angular


【解决方案1】:

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

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

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

【讨论】:

【解决方案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/18870
    https://github.com/angular/angular/issues/8273
    https://github.com/angular/angular/blob/master/packages/platform-browser/src/dom/events/key_events.ts
    https://alligator.io/angular/binding-keyup-keydown-events/

    【讨论】:

      【解决方案4】:

      【讨论】:

        【解决方案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()"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-11-19
            • 1970-01-01
            • 2016-01-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多