Javascript 在角度4中触发输入(keyup.enter)时防止(ngSubmit)
这里我有一个有很多输入的表单。其中一个不是表单生成器的一部分。我用它来创建一些自定义数据 所以问题是我在这个输入元素上添加了一个(keyup.ente)事件,但它会触发表单上的(ngSubmit) 我尝试在(keyup.enter)上添加event.stopPropagation,但由于某种原因,它不起作用。问题是Javascript 在角度4中触发输入(keyup.enter)时防止(ngSubmit),javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,这里我有一个有很多输入的表单。其中一个不是表单生成器的一部分。我用它来创建一些自定义数据 所以问题是我在这个输入元素上添加了一个(keyup.ente)事件,但它会触发表单上的(ngSubmit) 我尝试在(keyup.enter)上添加event.stopPropagation,但由于某种原因,它不起作用。问题是在之前处理键下事件,因此您应该在上使用键下。请改为在上输入。此外,您应该使用event.preventDefault()来阻止事件到达(并触发提交-事件) app.component.
在
之前处理键下事件,因此您应该在
上使用键下。请改为在
上输入。此外,您应该使用event.preventDefault()
来阻止事件到达
(并触发提交
-事件)
app.component.html
<form (ngSubmit)="onSubmit">
...
<input (keydown.enter)="handleKeyEnter($event)">
</form>
你可以试试
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>
如果需要从该行为中排除特定的子项(如数据输入),请检查event.target
&event.srcElement
在plunk.co上共享代码或检查示例代码。有时它甚至不会触发(keyup.enter)。
<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>
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();
}
}