【问题标题】:keypress event is not working in ionic 2 Android按键事件在 ionic 2 Android 中不起作用
【发布时间】:2018-03-15 14:35:24
【问题描述】:

在 ionic 2 Android 应用程序中不会触发 keypress 事件。同样适用于 iOS 和浏览器(chrome)平台。我的要求是用一些字符限制键盘输入。即,不想显示我在输入字段中输入的字符。以下代码sn -p如下..

onKeyPress(event) {
    const pattern = /[0-9\.\ ]/;
    let inputChar = String.fromCharCode(event.charCode);
    if (!pattern.test(inputChar)) {
        event.preventDefault();
    }
}

:HTML

<input type="text" (click)="stopProcess()" (keypress)="onKeyPress($event)" />

上述函数在 android 中没有触发。谁能给我一个相同的解决方案?

【问题讨论】:

  • 试试这个(keyup)="onKeyPress($event)"
  • @sanu 对此有任何更新
  • 我的反馈是有些手机可以处理按键,有些不能(甚至有些是Android 8.0),正在寻找解决方案...

标签: angular cordova ionic-framework ionic2 ionic3


【解决方案1】:

我一般用JS键监听:

page.ts:

ionViewDidLoad() {
    document.addEventListener('keydown', (key) => {this.keydown(key)} );
}

keydown(key){
    console.log('Tadaaah')!
}

如果要为每个键触发事件,在函数keydown(key)中,监听key.keyCode:

keydown(key){
  console.log(key.keyCode);
}

按下要触发事件的按键,做笔记,然后添加功能:

keydown(key){
  if (key.keyCode == 13){
    this.functionA();
    return;
  }
  if (key.keyCode == 32){
    this.functionB();
    return;
  }
}

functionA() {
   console.log('Function A');
}

functionB() {
   console.log('Function B');
}

总结

你的代码应该是这样的:

  ionViewDidLoad() {
    document.addEventListener('keydown', (key) => {this.onKeyPress(key)} );
  }

  onKeyPress(key) {
    const pattern = /[0-9\.\ ]/;
    let inputChar: string = key.keyCode;
    if (!pattern.test(inputChar)) {
      event.preventDefault();
    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多