簡體   English   中英

Ember 輸入類型數字只允許在 Decimal 后輸入 2 位數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM