Javascript只输入带有3个小数位的正十进制数或负十进制数到ASP.NET TextBox中

时间:2011-08-26 05:03:02

标签: javascript asp.net visual-studio-2008 user-controls textbox

我的UserControl中有一个TextBox。在这里,我想只输入三位小数的正十进制数或负十进制数。 例如如下:         128.324,-23.453,10,0.453,-2,2.34,-5.34 TextBox不允许输入其他字符。如何使用JavaScript执行此操作?我在JavaScript中不够好。

2 个答案:

答案 0 :(得分:1)

检查内容的正则表达式如下:

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

但是这不会强制成千上万的逗号,只允许它在整数部分的某个地方。请注意,在某些国家/地区,小数点使用逗号。

答案 1 :(得分:0)

如果您确认更改,您应该没问题。确保您还验证在服务器上发送到服务器的任何数据,因为无论您如何尝试使用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