【问题标题】:How to get (keyup.enter) event on option of datalist in Angular 6?如何在Angular 6中的datalist选项上获取(keyup.enter)事件?
【发布时间】:2019-02-13 07:21:28
【问题描述】:

如何在 Angular 6 中的 datalist 选项上获取 (keyup.enter) 事件

我的 HTML 代码:

<input list="filteredArray" (keyup)="filterRecord(empForm.controls['empname'].value)" type="text" formControlName="empname" />
  <datalist id="filteredArray">
     <option (keyup.enter)="SelectRecord()" *ngFor="let item of filteredArray">{{item}}</option>
  </datalist>

我的打字稿代码:

filtervendor(name: any) {
   this.filteredArray = ['AB','SD','DF','FG'];
}

SelectRecord() {
    console.log('select');
  }

以上解决方案适用于输入按钮。

在上面的示例中,我在 keyup 上过滤员工并将其显示在数据列表中,如果我选择一名员工或在员工上制表符,则其名称将填充在文本框中,但我想获取 (keyup.enter) 事件或制表符事件datalist 和filteredArray 中的选项为空。

【问题讨论】:

    标签: angular html typescript


    【解决方案1】:

    您不需要自己过滤datalist,浏览器会为您完成这项工作。毕竟它只是预定义值的集合。您可以使用 [(ngModel)] 与任何其他输入一样获得“选定”。

    例子:

    <input  type="text" name="empname" list="filteredArray" [(ngModel)]="inputValue"/>
    <datalist id="filteredArray">
      <option *ngFor="let item of filteredArray">{{item}}</option>
    </datalist>
    
    <p>
      The value is: {{inputValue}}
    </p>
    

    TS:

      filteredArray = ['AB', 'SD', 'DF', 'FG'];
      inputValue = "";
    

    Stackblitz 演示:https://stackblitz.com/edit/angular-s9o9dt

    【讨论】:

      【解决方案2】:

      HTML 代码

      <input list="filteredArray" (keyup)="filterRecord(empForm.controls['empname'].value, $event)" type="text" formControlName="empname" />
                    <datalist id="filteredArray">
                      <option (keyup.enter)="SelectRecord()" *ngFor="let item of filteredArray">{{item}}</option>
                    </datalist>
      

      输入脚本代码

         private filterRecord(value, event)
              {
                  if (event.keyCode == 13)
                  {
                     // enter keycode
                  }        
                  else if (event.keyCode == 9)
                  {
                     // tab keycode
                  } 
              }
      

      检查更多键码here

      【讨论】:

      • 我想为 datalist 中的选项(keyup.enter)事件
      • @Tejas 您将在 datalist 的更改事件上应用 keyup.enter
      • 在我打印 {{item}} 的数据列表中。假设我想打印 {{item.name}} 并且该值应该是 {{item.id}} 但 id 不应该显示,我应该怎么做?
      • @Tejas 你可以在这里显示值&lt;option *ngFor="let item of filteredArray"&gt;{{item.name}}&lt;/option&gt; 并给选项value 属性作为value={{item.id}}.. 然后ngModel 将拥有ID 的选定选项
      猜你喜欢
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多