我想限制數字輸入到0-100範圍,但在輸入上,而不是在驗證期間。我使用ngModel綁定值和emitt改變事件:如何在值沒有改變時強制ngModel更新?
<input [ngModel]="value" (ngModelChange)="validate($event)" />
,然後檢查值超過規定限度:
public validate(value) {
if (value > 100)
this.value = 100;
if (value < 0)
this.value = 0;
}
這partialy作品。但是,如果我說試着輸入150並且數值會切換到100,那麼我可以輸入超過100的任何數據,因爲模型值保持爲100,所以輸入值不會更新。有沒有辦法手動強制這個更新?
編輯:我錯過了很重要的一點。這種行爲似乎只發生在輸入type = number的情況下。文本輸入不會超過100個。我的解決方法是使用費薩爾按鍵事件具有的preventDefault像這樣建議:
public keyPress(event) {
let inputChar: number = +String.fromCharCode(event.charCode);
if (this.value + inputChar > 100 || this.value + inputChar < 0) {
// Exceeded limits, prevent input
event.preventDefault();
}
}
該解決方案適合您嗎? – Faisal
這不適用於輸入類型編號,但是如果我檢查按鍵如果模型值+輸入字符超過100,它似乎是補丁我有。不是很乾淨的解決方案,但工作。謝謝。 –