2017-05-31 23 views
1

我試圖驗證在IE 11角2:用正則表達式

<input type="number" name="amount" [(ngModel)]="amount" (keypress)="validateNum($event) /> 

而且在打字稿

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

在這裏,我試圖限制輸入到數字字段數驗證3位數字和5位小數。我面臨的問題是,regEx正在驗證每個按下的鍵(在按下3個數字後不驗證),並且不允許輸入任何數字。如何在數字達到限制後驗證號碼?或者是否有可能在沒有RegEx的情況下驗證Angular2?我是Angular的新手,需要建議。

+0

爲什麼不簡單地測試'this.amount'而不是inputChar? :'if(!pattern.test(this.amount))' –

+0

你也應該刪除'g'修飾符,你不需要帶'test'的全局修飾符。 –

回答

0

keypress更改爲blur。這樣它將在控件失去焦點時運行驗證。

0

有一個很棒的庫叫text-mask。您可以輕鬆創建一個面具並限制您的用戶輸入3位數和5位小數。

mask = [/\d/, /\d/,/\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/]