每三位数字(千位分隔符)添加逗号的函数也会从小数中删除句点



我有一个很大的表单,它是使用数据库中的信息构建的。

对于所有被归类为"数字"的字段,在key up上调用一个函数来自动添加千个分隔符。运行良好

function commas(n){
        n = n.replace(/,/g, '');
        var s=n.split('.')[1];
        (s) ? s='.'+s : s='';
        n=n.split('.')[0]
        while(n.length>3){
            s=','+n.substr(n.length-3,3)+s;
            n=n.substr(0,n.length-3)
        }
        return n+s
    }

然而,我现在注意到,如果我想把一个小的十进制值放在一个字段中,该字段在键向上调用时会删除周期

2.3=>23

我看不出这是怎么发生的:我在Stack上的某个人的帮助下编写了这个逗号函数。

有人能提出建议吗?感谢

编辑:

这个现象证明我不是在编的;)

问题是,只要输入'.',代码看到后面没有任何内容,并设置s="。其效果是,每次输入"."时,它再次被移除。

试试这样的东西:

function commas(n) {
    n = n.replace(/,/g, '');
    var s = n.split('.')[1];
    (s)
        ? s = '.' + s
        : n.indexOf('.') >= 0
            ? s = '.'
            : s = '';
    n = n.split('.')[0];
    while (n.length > 3) {
        s = ',' + n.substr(n.length - 3, 3) + s;
        n = n.substr(0, n.length - 3);
    }
    return n + s;
}

最新更新