2016-11-28 66 views
-3

我想限制除角度2應用程序中使用的文本框以外的所有字符條目,當用戶開始輸入其他字符時,它不應該顯示在文本框中?限制除角度2以外的整數字符

我試過了keyUp事件,但似乎沒有工作?

<input type="text" id="txtEmpID" [(ngModel)]="filters.empID" class="form-control" 
(keyup)="onKey($event)"> 


    onKey(event: any) { 
     var charCode = event.keyCode; 
     if (charCode > 95 && charCode < 106) { { 
      console.log(charCode); 
      return false; 
     } 
} 

我不能使用<input type="number" >作爲應用程序使用IE9,並且不支持這些新的HTML 5個標準,舊的瀏覽器。 我知道IE吸

+0

檢查http://stackoverflow.com/questions/15554915/angular-directive-ignore-non-numeric-input –

+0

http://stackoverflow.com/a/19675023/5236174 –

+1

我對此有一種不好的感覺。 ..如果你想限制在現場使用的密鑰,請不要這樣做。當我無法複製時,我會生氣,粘貼'cmd + L','cmd + A'或任何其他組合鍵,例如使用箭頭鍵進行導航......它從來沒有做過正確的事情。所以只需驗證該值,並在輸入錯誤時顯示它們。請參閱@LaharShah鏈接如何做到更正確 - 順便說一句,我認爲你應該擰ie9,現在不到1% – Endless

回答

0

在看過所有人發表的評論後,我想出了一個辦法。

<input type="text" id="txtEmpID" [(ngModel)]="filters.empID" class="form-control" onkeypress="return event.charCode >= 48 && event.charCode <= 57"> 

做同樣的事情,另一種方法是使用輸入(keyup)="onKey($event)"事件和編寫邏輯在那裏,但有一個陷阱

if (isNaN(event.target.value)) { 
    event.target.value = event.target.value.replace(/[^0-9]/g, ''); 
    console.log(event.target.value); 
} 

這個代碼將做的工作,當用戶在文本框中輸入任何東西除了數字,它會從文本框中清除這些值,但是當您嘗試在JavaScript中檢索過濾器框值時,它會顯示舊值,該值將使用event.target.value.replace(/[^0-9]/g, '');(非整數字符)替換。我不確定它是否特定於angular 2或我正在使用的其他第三方java腳本庫。