按键关闭事件在Android设备中不起作用

按键关闭事件在Android设备中不起作用,android,angular,ionic-framework,ionic2,ionic3,Android,Angular,Ionic Framework,Ionic2,Ionic3,我使用keydown事件编写了一个函数,使输入只允许数字“-”和退格键。当我在ionic serve或iOS中测试时,它起了作用。但当我在Android设备上测试时,它不工作,输入字段将允许输入所有字符。 当我使用console.log(event)时,它总是返回key=“Unidentified”,keyCode=229 环境:爱奥尼亚3,节点v6.11,NPM 3.10,安卓5.1.1 我不知道怎么解决这个问题 .ts文件 import {Component} from '@angular/

我使用keydown事件编写了一个函数,使输入只允许数字“-”和退格键。当我在ionic serve或iOS中测试时,它起了作用。但当我在Android设备上测试时,它不工作,输入字段将允许输入所有字符。 当我使用console.log(event)时,它总是返回key=“Unidentified”,keyCode=229

环境:爱奥尼亚3,节点v6.11,NPM 3.10,安卓5.1.1

我不知道怎么解决这个问题

.ts文件

import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  constructor(public navCtrl: NavController) {

  }

  isValidNumber(event) {
    //console.log(event);
    return /\d|-|Backspace/.test(event.key);

  }
}
.html文件

<ion-header>
  <ion-navbar>
    <ion-title>Home</ion-title>
  </ion-navbar>
</ion-header>
<ion-content>
  <ion-item>
      <ion-input  type="text" (keydown)="isValidNumber($event)"></ion-input>
  </ion-item> 
</ion-content>
尝试以下操作:

function isValidNumber(e) {
if (
    !(e.keyCode === 8 || !(e.keyCode >= 48 && e.keyCode <= 57) ||  // 0-9
        !(e.keyCode >= 96 && e.keyCode <= 105) // numpad 0-9
        // some more checking like arrows, delete, backspace, etc.
        || e.keyCode == 229)) { // Check for the 'placeholder keyCode'
    return false;
}
{
    // This is not a valid key
    e.preventDefault();
}
return true;
函数isValidNumber(e){
如果(

!(e.keyCode==8 | |!(e.keyCode>=48&&e.keyCode=96&&e.keyCode为什么不使用
type=“number”
?@SwapnilPatwa我想输入一个像“0001234”这样的字符串值,所以如果type=number,它将转换为1234。无论如何,我也想允许输入“-”字符。我更新了我的答案。请看:我从安卓键盘输入的所有字符总是返回keyCode=229;先生,我正在真正的安卓设备上测试(三星e5 SM-E500H)。设备的默认语言是什么?检查我的更新应答默认为越南语,但我改为英语(美国),它仍然不起作用