gpt4 book ai didi

javascript - Angular 表单 - 如何在表单无效时禁用 onSubmit 事件?

转载 作者:行者123 更新时间:2023-11-30 20:11:39 25 4
gpt4 key购买 nike

<div>
<form (ngSubmit)="mySubmit()" #msgBoxForm="ngForm">
<button mat-raised-button color="accent" (click)="rollDice()">
RollDice
</button>
<input
type="text"
name="msgInputBox"
[(ngModel)]="TextMessage"
required
#box (keyup.enter)="enterSubmit()"
placeholder="Message" >
<button
type="submit"
class="btn btn-success"
[disabled]="!msgBoxForm.form.valid">
Submit
</button>
</form>
</div>

现在当输入框为空时,虽然提交按钮将被禁用,但按回车键将同时调用 enterSubmit() 和 mySubmit() 方法。即使单击没有“提交”类型的 RollDice 按钮,也会调用 mySubmit()。如何仅在单击提交按钮时调用 mySubmit()?

最佳答案

表单内的任何按钮或 enter press 的默认行为都是提交表单。为防止这种情况,您可以执行以下操作:

<div>
<form (ngSubmit)="msgBoxForm.form.valid && mySubmit()" #msgBoxForm="ngForm">
<button mat-raised-button color="accent" (click)="rollDice($event)">
RollDice
</button>
<input
type="text"
name="msgInputBox"
[(ngModel)]="TextMessage"
required
#box (keyup.enter)="enterSubmit($event)"
placeholder="Message" >
<button
type="submit"
class="btn btn-success"
[disabled]="!msgBoxForm.form.valid">
Submit
</button>
</form>
</div>

在你的 typescript 中:

rollDice(event: Event) {
event.preventDefault();
//rest of your code
}

enterSubmit(event: Event) {
event.preventDefault();
//rest of your code
}

这允许您仅通过单击提交按钮来提交表单。

编辑:我添加了如何在提交表单之前检查表单有效性。解决方案来自这里:source

关于javascript - Angular 表单 - 如何在表单无效时禁用 onSubmit 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52342769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com