【问题标题】:Prevent (ngSubmit) when (keyup.enter) on an input is triggered in Angular 4在 Angular 4 中触发(keyup.enter)输入时阻止(ngSubmit)
【发布时间】:2018-03-28 06:45:26
【问题描述】:

在这里,我有一个包含许多输入的表单。其中之一不是表单构建器的一部分。我正在使用它来创建一些自定义数据。

所以问题是我在这个输入元素上添加了一个 (keyup.ente) 事件,但它触发了表单上的 (ngSubmit)。

我尝试在 (keyup.enter) 上添加 event.stopPropagation,但由于某种原因它不起作用。

【问题讨论】:

标签: javascript html angular typescript


【解决方案1】:

问题是<form><input> 之前处理keydown 事件,因此您应该在<input> 上使用keydown.enter。此外,您应该使用event.preventDefault() 阻止事件到达<form>(并触发submit-事件)。

app.component.html

<form (ngSubmit)="onSubmit">
  ...
  <input (keydown.enter)="handleKeyEnter($event)">
</form>

app.component.ts

handleKeyEnter(event) {
  event.preventDefault();
  ...
}

demo

【讨论】:

    【解决方案2】:

    你可以试试this

    app.component.html

    <form [formGroup]="form" (ngSubmit)="onSubmit($event)" (keydown)="handleKeyupEnter($event)">
      <input type="text" [formControl]="form.controls['name']" placeholder="Name">
    <br><br>
      <input type="text" placeholder="data" #entry >
    
      <br><br>
      <button type="submit">Submit</button>
    </form>
    

    app.component.ts

    import { Component, ViewChild, ElementRef } from '@angular/core';
    import { FormBuilder, FormGroup, FormControl } from '@angular/forms';
    
    @Component({
      selector: 'my-app',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    export class AppComponent {
      form: FormGroup;
    
      constructor(private fb: FormBuilder) { }
    
      @ViewChild('entry') entry: ElementRef;
    
      ngOnInit() {
        this.form = this.fb.group({
          name: ''
        })
      }
    
      onSubmit(e) {
        alert('Form Submitted');
        console.log(e);
      }
    
      handleKeyupEnter(event, value) {
        console.log(event)
        if(event.code=="Enter")
        event.preventDefault();
    
      }
    }
    

    如果您需要从这种行为中排除特定的孩子(例如您的数据输入),请检查 event.targetevent.srcElement

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 2017-11-29
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      相关资源
      最近更新 更多