使用逗号的Javascript数字格式
我正在尝试格式化数字,因此它们在每3个数字之间都有逗号。 然而,它非常小故障,一旦达到8个数字就无法工作。 我已将所有代码放在下面的jsfiddle中:
function commaSeparateNumber(val){ val = val.replace(',', ''); var array = val.split(''); var index = -3; while (array.length + index > 0) { array.splice(index, 0, ','); // Decrement by 4 since we just added another unit to the array. index -= 4; } return array.join(''); }; $(document).on('keyup', '.test', function() { var value = $(this).val(); value = commaSeparateNumber(value); $(this).val(value); });
http://jsfiddle.net/R8JrF/
任何帮助表示赞赏!
我在评论中即兴创作了答案。 您需要的是以下代码。 看看这个,还有小提琴:
$(document).on('keyup', '.test', function() { var x = $(this).val(); $(this).val(x.toString().replace(/,/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",")); });
小提琴: http : //jsfiddle.net/praveenscience/R8JrF/1/
它不起作用的原因是,一旦你做了更改,你需要删除所有的逗号,并再次进行格式化,这在OP的代码和其他答案代码中都没有。
使用Number.prototype.toLocaleString();
在这里查看
var no = 3456; no.toLocaleString();
给3,456
你的问题是当你到达第8位时,中间结果中已经有两个逗号。 然而,
val = val.replace(',', '');
只替换第一个。 您需要提供一个带有全局标志集的正则表达式:
val = val.replace(/,/g, '');
更新,工作小提琴