keypress事件在离线2 Android中无效

时间:2017-10-04 08:56:05

标签: angular cordova ionic-framework ionic2 ionic3

在离子2 Android应用程序中未触发按键事件。 iOS和浏览器(chrome)平台也能正常运行。我的要求是限制键盘输入一些字符。即,不想显示我输入字段中输入的字符。以下代码片段如下..

model.store

:HTML

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

上面的函数没有在android中触发。任何人都可以建议我一个解决方案吗?

1 个答案:

答案 0 :(得分:0)

我通常使用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();
    }
  }