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

我试图动态调整输入的数值以包括千位分隔符

这是我的代码:

function addCommas(nStr) { nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; }  

但是当我在4之后输入数字时,该字段被清除。

我出错的任何想法? 如果有一个jQuery解决方案,我已经在我的网站上使用它了。

尝试

  

代替。 由于该function使用文本而不是数字。

试试这个正则表达式:

 function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } 

要添加千位分隔符,您可以对这些调用进行字符串拆分,反向和替换:

 function addThousandsSeparator(input) { var output = input if (parseFloat(input)) { input = new String(input); // so you can perform string operations var parts = input.split("."); // remove the decimal part parts[0] = parts[0].split("").reverse().join("").replace(/(\d{3})(?!$)/g, "$1,").split("").reverse().join(""); output = parts.join("."); } return output; } addThousandsSeparator("1234567890"); // returns 1,234,567,890 addThousandsSeparator("12345678.90"); // returns 12,345,678.90 

正如狄龙所说,它需要是一个字符串(或者你可以使用typeof(n)和stringify,如果没有)

 function addCommas(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 } 

在格式化之前的每种情况下,首先尝试删除现有的逗号,就像那样: 删除jquery中“实时”输入字段中的逗号

例:

 function addThousandsSeparator(x) { //remove commas retVal = x ? parseFloat(x.replace(/,/g, '')) : 0; //apply formatting return retVal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }