Search code examples
angularionic3ionic4angular8keyup

Enter key to move to next element in Ionic 4 Angular 8 form


In my PWA built with Ionic and Angular 8, I am in need to handle enter key press to move to next element. How can I achieve it with (keyup.enter). Please help me.

https://stackblitz.com/edit/ionic-3drfby


Solution

  • one way is to setting a reference of the next element. like below

    <ion-content padding>
     <form (ngSubmit)="logForm()">
          <ion-item>
            <ion-label>Todo1</ion-label>
            <ion-input type="text" [(ngModel)]="todo.title1" name="title1" #a (keyup.enter)="setFocus(b)"></ion-input>
          </ion-item>
          <ion-item>
            <ion-label>Todo2</ion-label>
            <ion-input type="text" [(ngModel)]="todo.title2" name="title2" #b (keyup.enter)="setFocus(c)"></ion-input>
          </ion-item>
          <ion-item>
            <ion-label>Todo3</ion-label>
            <ion-input type="text" [(ngModel)]="todo.title3" name="title3" #c (keyup.enter)="setFocus(d)"></ion-input>
          </ion-item>
          <ion-item>
            <ion-label>Description</ion-label>
            <ion-textarea [(ngModel)]="todo.description" name="description" #d></ion-textarea>
          </ion-item>
          <button ion-button type="submit" block>Add Todo</button>
        </form>
    </ion-content>
    

    and in .ts file

    import { Component } from '@angular/core';
    import { NavController } from 'ionic-angular';
    
    @Component({
      selector: 'page-home',
      templateUrl: 'home.html'
    })
    export class HomePage {
    todo = {}
      logForm() {
        console.log(this.todo)
      }
    
      setFocus(nextElement) {
         nextElement.setFocus(); //For Ionic 4
        //nextElement.focus(); //older version
      }
    
      constructor(public navCtrl: NavController) {
    
      }
    
    }