角度2:IE中的数字验证



我正在尝试在IE 11中进行数字验证。我指的是帖子。我无法验证 2 位数字和 3 位小数的数字。IE 11 的打字稿是否支持正则表达式?或者有没有其他方法可以验证数字?

validateNum(event: KeyboardEvent): void {
    const pattern = /^d{1,3}[.]d{1,3}$/;
    let inputChar = String.fromCharCode(event.charCode);
    if(!pattern.test(inputChar)) {
        event.preventDefault();;
    }

普伦克

请看这个 Plnkr 演示。

注意:数字键盘中的点 (.( 不会在 IE 中注册为键盘事件事件。但是常规键盘中的点(逗号 [,] 和斜杠 [/] 之间(工作正常。

此外,按键不会注册退格键,因此我为其添加了单独的事件处理。

下面是示例代码:

.HTML:

<input type="number" name="amount" [(ngModel)]="amount" 
            (keypress)="validateNum($event, amount)" 
            (keydown.backspace)="handleBS()"/>`

应用:

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);
  }

最新更新