Javascript 检测输入返回与被动形式中的按钮点击

Javascript 检测输入返回与被动形式中的按钮点击,javascript,angular,angular-reactive-forms,Javascript,Angular,Angular Reactive Forms,我正在用Angular构建一个反应式表单,上面有3个提交按钮 <form [formGroup]="sessionForm" (submit)="submitSession($event)"> <div class="row"> <label> <span>Title</span> <input type="text" formControlName="tit

我正在用Angular构建一个反应式表单,上面有3个提交按钮

<form [formGroup]="sessionForm" (submit)="submitSession($event)">
    <div class="row">
        <label>
            <span>Title</span>
            <input type="text" formControlName="title" [class.required]="markRequired.indexOf('title') >= 0">
        </label>
    </div>
    ... more fields ...
    <div *ngIf="!admin" class="row">
        <button type="submit" (click)="setBtnClicked('submit')" class="btn btn-primary">Submit</button>
    </div>
    <div *ngIf="admin" class="row">
        <button type="submit" (click)="setBtnClicked('save')" class="btn btn-primary">Save</button>
        <button type="submit" (click)="setBtnClicked('approve')" class="btn btn-success">Save and approve</button>
        <button type="submit" (click)="delete($event, false)" [hidden]="confirmDelete" class="btn btn-danger">Delete</button>
        <button type="submit" (click)="delete($event, true)" [hidden]="!confirmDelete" class="btn btn-danger">Are you sure?</button>
    </div>
    <div [hidden]="!showSuccess" class="msgBox msgBox-success">Your session has been submitted! It will need to be approved before it is listed.</div>
</form>
但是,当有人点击输入返回时,我注意到
this.btnClicked
的值等于表单中的第一个按钮


我不知道如何跟踪用户何时点击回车键或何时点击按钮,因此我可以做出不同的响应,或者我的结构是否错误。我想在任何提交上触发
submitSession
功能,无论是返回还是按钮。我确实尝试向按钮添加formControl,但失败了。

因为您使用的是表单,在输入上按enter键应该会运行绑定到表单的
submitSession()
方法,但它可能默认为表单上的第一个提交按钮。从按钮中删除
submitSession()
以及
type=“submit”
可能会阻止基于enter的表单提交。这样,用户就需要实际单击一个按钮来触发某些内容

同样在传递事件的方法中,以下代码将检测事件是否由enter键触发

if (event.keyCode === 13) {
    console.log('you just clicked enter');
}

我试图从submit事件中检查
keyCode
,但结果未定义。另外,单击和
submitSession
都会运行(先单击,然后是
submitSession
)。您是否尝试过从按钮中删除
submitSession()
type=“submit”
?我会试一试,尽管我认为两者在语义上都是正确的?这不是Angular的目标吗?是的,但是您有多个提交按钮,我相信这就是问题的根源。只有第一个会被执行,这是有道理的。也许这就是问题所在?也许另一个解决方案是一个更好的主意。。。
if (event.keyCode === 13) {
    console.log('you just clicked enter');
}