1. ホーム
  2. html

[解決済み] Angular 5 Enterキー押下でボタン送信

2022-02-19 23:42:15

質問

Angular 5のフォームアプリケーションで、通常のモデルをすべて使用していますが、フォーム上で、「送信」ボタンを物理的にクリックしなくてもフォームを送信できるようにしたいのです。

通常であれば、このような場合は type=submit をボタン要素に追加しましたが、全く動作していないようです。

を呼び出したいわけではありません。 onclick 関数が動作するようにするためだけです。どなたか、私が見落としているようなことを教えていただけませんか。

<form (submit)="search(ref, id, forename, surname, postcode)" action="#">
  <mat-card>
    <mat-card-title class="firstCard">Investor/Adviser search</mat-card-title>
    <mat-card-content>
      <p *ngIf="this.noCriteria" class="errorMessage">Please enter search criteria.</p>
      <p *ngIf="this.notFound" class="errorMessage">No investor's or adviser's found.</p>
        <mat-form-field>
          <input matInput id="invReference" placeholder="Investor/Adviser reference (e.g. SCC/AJBS)" #ref>
        </mat-form-field>
        <mat-form-field>
          <input matInput id="invId" placeholder="Investor/Adviser ID" type="number" #id>
        </mat-form-field>
        <mat-form-field>
          <input matInput id="invForname" placeholder="Forename" #forename>
        </mat-form-field>
        <mat-form-field>
          <input matInput id="invSurname" placeholder="Surname" #surname>
        </mat-form-field>
        <mat-form-field>
          <input matInput id="invPostcode" placeholder="Postcode" #postcode>
        </mat-form-field>
    </mat-card-content>
    <mat-card-footer>
      <button mat-raised-button type="submit" class="successButton" id="invSearch" title="Click to perform search.">Search</button>
    </mat-card-footer>
  </mat-card>
</form>

どのように解決するのですか?

のようにダミーフォームで囲むという手もありますね。

<mat-card-footer>
<form (submit)="search(ref, id, forename, surname, postcode)" action="#">
  <button mat-raised-button type="submit" class="successButton" id="invSearch" title="Click to perform search." >Search</button>
</form>
</mat-card-footer>

検索機能には return false を使用して、アクションが実行されないことを確認します。
ただ、Enterキーを押したときに、フォームにフォーカスが当たっている(はず)ことを確認してください。