我试图在IE 11中进行数字验证。我指的是to the post。我无法验证2位数和3位小数的数字。 IE 11的打字稿是否支持正则表达式?或者还有其他方法来验证号码吗?
<%= yield %>
答案 0 :(得分:0)
请参阅此Plnkr demo。
注意:数字键盘中的点(。)不会在IE中注册为键盘事件事件。但常规键盘中的点(逗号[,]和斜杠[/]之间)可正常工作。
此外,keypress不会注册退格键,因此我为它添加了单独的事件处理。
以下是示例代码:
HTML:
<input type="number" name="amount" [(ngModel)]="amount"
(keypress)="validateNum($event, amount)"
(keydown.backspace)="handleBS()"/>`
App.ts:
data: string = "";
validateNum(event: KeyboardEvent, amount): void {
let pattern = new RegExp("^\d{1,3}[.]\d{1,3}$");
console.log(this.data);
if(amount == undefined){
pattern = new RegExp("^[0-9]{1}$");
}
if(this.data.length >= 1 && this.data.length < 3){
pattern = new RegExp("^[1-9]{1,3}$");
}
if(this.data.length == 3){
pattern = new RegExp("^[0-9]{1,3}[.]$");
}
if(this.data.length > 3){
pattern = new RegExp("^[0-9]{1,3}[.][0-9]{1,3}$");
}
if(this.data.length > 7){
return false;
}
if(!pattern.test(this.data + event.key)) {
return false;
}
this.data = this.data + event.key;
return true;
}
handleBS(){
this.data = this.data.slice(0, this.data.length - 1);
}