我使用keydown事件编写一个函数,让输入只允许数字,' - '和BackSpace键。当我在离子服务或iOS测试时,它工作。但是当我在Android设备上测试时,它不起作用,输入字段将允许所有字符输入。 当我使用console.log(event)时,它总是返回key =“Unidentified”,keyCode = 229。
环境:Ionic 3,Node v6.11,NPM 3.10,Android 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>
答案 0 :(得分:0)
尝试以下方法:
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;
}
找到here
请阅读以下内容:http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html