簡體   English   中英

Javascript僅在ASP.NET TextBox中輸入帶有三位小數的正或負十進制數

[英]Javascript to enter only positive or negative decimal number with 3 decimal places into a ASP.NET TextBox

我的UserControl中有一個TextBox。 在這里,我只想輸入帶有三個小數位的正或負十進制數。 例如如下:128.324,-23.453、10、0.453,-2、2.34,-5.34 TextBox不允許輸入其他字符。 如何使用JavaScript做到這一點? 我的JavaScript不夠好。

用於檢查內容的正則表達式將類似於:

var re = /^[+-]?[\d,]+(\.\d{3})?$/;

但這不會強制使用數千個逗號,而只能將其放在整數部分的某個位置。 請注意,在某些國家/地區,逗號用作小數點。

如果您對變更進行驗證,則應該沒事。 確保您還驗證了服務器上發送到服務器的所有數據,因為無論您如何嘗試使用JS進行驗證,任何數據都可以發送:

var input = document.getElementById('tehinput');
input.onchange = function(){
    var val = this.value, sign = '';
    if(val.lastIndexOf('-', 0) === 0){
        sign = '-';
        val = val.substring(1);
    }
    var parts = val.split('.').slice(0,2);
        if(parts[0] && parseInt(parts[0], 10).toString() !== parts[0]){
        parts[0] = parseInt(parts[0], 10);
        if(!parts[0])
            parts[0] = 0;
    }
    var result = parts[0];
    if(parts.length > 1){
        result += '.';
        if(parts[1].length > 3 || 
          parseInt(parts[1], 10).toString() !== parts[1]){
              parts[1] = parseInt(parts[1].substring(0,3), 10);
              if(!parts[1])
                  parts[1] = 0;
        }
        result += parts[1];
    }
    this.value = sign+result;
}

JSFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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