![](/img/trans.png)
[英]Allow 2 decimal places in <input type="number"> and comma every 3 digits
[英]Ember input type number to allow only 2 digits after Decimal
我正在開發一個 Ember 應用程序,輸入類型編號如下
${{input type="number" id=p.ViolationTypeId
value=p.PenaltyAssessed maxlength="5"
scale="0.01" pattern="^\d+(\.\d{0,2})?$"
key-down=(action 'allowOnly2Decimals')
focusOut=(action 'saveTotalPenalty' p model.id p.PenaltyAssessed)}}
然后我寫了一個以下 JavaScript 代碼來限制十進制后數字的輸入,這個 function 在 Key-Down 事件中被調用。
allowOnly2Decimals: function (e1, event) {
var boxId = '#' + event.path[0].id;
//if ((event.keyCode == 190) || (event.keyCode == 110)) {
// this.decimalPressed = true;
//}
var t = e1.toString().split('.');
if (t[1] != null) {
if (t[1].length == 2) {
this.limitDecimal = e1;
$(boxId).val(e1);
}
if (t[1].length >= 2) {
e1 = this.limitDecimal;
$(boxId).val(e1);
return false;
}
}
}
}
它可以工作,但它正在做什么,它允許小數點后 3 位數字,但是當我在服務上發布它的值時,它正確地采用了小數點后 2 位數字,但它在文本框中顯示的是小數點后 3 位數字。 如果可能的話,另一個請求是,我可以在不使用文本框上的 id 屬性的情況下做同樣的事情嗎?
請任何幫助,在此先感謝。
要回答您的第一個問題,它允許 3 個值的原因是因為您正在使用keydown
事件。 在更新輸入之前觸發keydown
事件,因此您始終落后於實際值 1 個字符。 我建議不要使用 keydown 來使用change event 。 如果您確實必須在用戶鍵入時破壞用戶的輸入,請改用 keyup 事件。
要回答您的第二個問題,您可以通過event.target
訪問輸入,即$(event.target).val(e1);
最后,您的代碼對用戶的輸入做出了一些假設,如果他們粘貼的值超過小數點后 2 個字符,會發生什么情況?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.