如何通过使用 Ionic2 在 iPhone/iPad 上点击返回键进入下一个输入?

Posted

技术标签:

【中文标题】如何通过使用 Ionic2 在 iPhone/iPad 上点击返回键进入下一个输入?【英文标题】:How to go to next input by tapping return key on an iPhone/iPad with Ionic2? 【发布时间】:2017-12-23 10:12:39 【问题描述】:

我正在使用 Ionic Cordova 构建一个 iPhone 应用程序。我有一个登录屏幕用户名输入和密码输入以及一个提交按钮。输入用户名并点击“返回”后,我无法专注于密码输入。

我的 login.html 如下所示:

<ion-list >
     <ion-item>
<div id="loginlogo"></div>
     </ion-item>
      <ion-item>
        <ion-label stacked>Username</ion-label>
        <ion-input type="text" name="usernameInput"  (keyup.enter)="focusAndGo()" [(ngModel)]="usernameInput"></ion-input>
      </ion-item>

      <ion-item>
        <ion-label stacked>Password</ion-label>
        <ion-input type="password" id="passwordInput"  name="passwordInput" [(ngModel)]="passwordInput"></ion-input>
      </ion-item>
     <ion-item><button (click)="logincontrol()" ion-button color="light" block>Login</button></ion-item>
    </ion-list>

我的 login.ts 看起来像这样:

@ViewChild('passwordInput') nameInput;
  focusAndGo()
  
    var input = document.getElementById('passwordInput');
    input.focus();
    this.nameInput.setFocus();
    //this.nameInput.nativeElement.focus();
    //this.nameInput.nativeElement.setFocus();
    //this.passwordInput.focus();
    //alert(event.keyCode );
    //if( event.keyCode ==13)
    //
    //this.passwordInput.focus;
    //       
  

我尝试了上面评论的所有内容。我无法让光标移动到下一个输入。

【问题讨论】:

【参考方案1】:

我认为你应该在设置焦点之前阻止默认行为,

向您的函数发送 $event

<ion-input type="text" name="usernameInput"  (keyup)="focusAndGo($event)" [(ngModel)]="usernameInput"></ion-input>

在设置焦点之前使用 preventDefault()

focusAndGo(e)

    e.preventDefault();
    var input = document.getElementById('passwordInput');
    input.focus();     

【讨论】:

谢谢 NTP。我会尝试,我会告诉你结果。 很高兴能帮上忙。 您好,NTP。对不起,我不在了。我刚刚测试了当我点击返回时光标没有专注于密码输入。我将àlert('test'); 放在函数末尾只是为了测试它是否被调用。当我点击返回键时,它肯定会弹出一个警报,但它并不专注于密码字段。您是否有任何其他建议或想法为什么它不起作用?非常感谢您的帮助。【参考方案2】:

更新以获得更好的方法:this SO answer (我在收到赞后更新了帖子,但我认为正确的答案是链接中的指示)

这是一篇旧帖子,但有一种可能性是制作一个类似的指令

@Directive(
  selector: '[next-tab]',
)
export class NextTabDirective

  @Input('next-tab') nextControl: any;

  @HostListener("keydown.enter", ["$event"])
  onEnter(event: KeyboardEvent) 
    if (this.nextControl.focus)
    
      this.nextControl.focus();
      event.preventDefault();
      return false;
    
  

然后你可以使用类似的形式

<form [formGroup]="dataForm" (submit)="submit(dataForm)">
   <input        formControlName="data1" [next-tab]="data2">
   <input #data2 formControlName="data2" [next-tab]="data3">
   <input #data3 formControlName="data3">
   <button type="submit">Click</button>
</form>

【讨论】:

以上是关于如何通过使用 Ionic2 在 iPhone/iPad 上点击返回键进入下一个输入?的主要内容,如果未能解决你的问题,请参考以下文章

ionic2中如何使用自动生成器

ionic2中如何使用自动生成器

Ionic2 如何在页面中使用 JQuery 插件

Ionic2 Signature Pad 调整图像大小

Ionic2,Angular2:如何在使用 http get 进行 REST API 服务调用时避免 CORS 问题?

无法使用 ionic2 在设备上获取上一页名称