2017-10-09 52 views
2

我有一個輸入文本,因爲這一個:如何知道角色將在哪個位置輸入?

<input type="number" class="form-control" [ngClass]="config.inputClass" 
    [(ngModel)]="field.data" step="0.01" (keypress)="checkDecimalNumbers($event, field)" 
    (blur)="validateDecimalNumber(field)" [readonly]="checkReadOnly(field)" /> 

我需要知道在哪個位置的字符將被輸入的,因爲我需要只允許字符「 - 」在位置0我已經研究過所有的事件對象,但我沒有發現任何有用的東西。這是打字稿功能,但它允許在任何位置輸入減號。

public checkDecimalNumbers = function (ev: KeyboardEvent, field: any) { 
    const key = ev.keyCode || ev.charCode; 
    const keyStr = String.fromCharCode(key); 
    if ((keyStr === '.' && field.data.toString().indexOf(keyStr) < 0) || (keyStr === '-' && field.data.toString().indexOf(keyStr) < 0)) { 
     return; 
    } else if (isNaN(Number(keyStr))) { 
     ev.preventDefault(); 
    } 
} 
+0

你tryed 「$表」 就像是一個觀察者? https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch – 2017-10-09 16:37:53

+0

hii這是一個angularjs解決方案。我需要它的角度4 – raven

回答

0

您可以檢查輸入的字符,如果不是' - '則刪除,但同時添加第一個字符,然後用該字符替換該值。東西如下所示:

HTML

<input ... [(ngModel)]="input" (keyup)="format()" > 

打字稿

format(){ 
    let value = this.input; 
    this.input = value.substr(0, 1) + value.substr(1).replace('-',''); 
} 

DEMO

+0

它不工作,如果你繼續按鍵' - '允許添加幾個連字符 – VictorV

+0

哎呀,我忘了保存之前發佈,再試一次,請 – Vega

+0

添加到您的輸入類型=「數字」並且您的代碼停止工作。這就是我的問題 – raven

相關問題