0

我已经花时间研究了每个建议的解决方案,以解决在用户键入时调整用户输入字符串以格式化大数字以具有逗号分隔符的问题:

9999999999 --> 9,999,999,999 等等。

这里有几个关于堆栈溢出的讨论:

如何在 JavaScript 中用逗号打印一个数字作为千位分隔符

添加逗号作为千位分隔符(javascript) - 输出被删除

还有更多相关的查询,我已经测试了我能找到的那些,它们对于高达 4 或 5 的幂的数字效果很好,例如 12,345 很好,

但是更大的数字最终会带有太多的逗号:

1,,,,,0,,,0,,,000

例如是我目前已经实现的代码的输出。(它还将退格键注册为击键,所以当我退格三次时,它会添加一个逗号......)

function numberWithCommas(n){
    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
}

然后在输入上:

onkeyup="this.value=numberWithCommas(this.value);"

我是否错误地使用了该功能?或者它对于更大的数字根本不可行。有没有办法可以调整它以适用于任何大小的数字?

提前致谢

4

1 回答 1

1

您只是将逗号添加到第一次迭代后已经作为逗号的值......您应该在函数开头重置逗号numberWithCommas

n = n.replace(/,/g, "");
于 2012-11-29T22:24:54.037 回答