我有这些号码
10999
和 8094
和 456
如果需要的话,我要做的就是在正确的位置添加一个逗号,所以它看起来像这样
10,999
和 8,094
和 456
这些都在一个 p 标签中,比如这个 <p class="points">10999</p>
等等。
可以吗?
我在其他帖子 http://jsfiddle.net/pdWTU/1/ 的帮助下在这里尝试过,但似乎无法正常工作
谢谢
杰米
更新
搞砸了一点,并设法在这里解决了 http://jsfiddle.net/W5jwY/1/
打算看看新的全局化插件,以获得更好的方法
谢谢
杰米
最佳答案
适用于所有浏览器,这就是您所需要的。
function commaSeparateNumber(val){
while (/(\d+)(\d{3})/.test(val.toString())){
val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
}
return val;
}
感谢正则表达式,将其写得简洁明了。这是直接的 JS,但你可以像这样在 jQuery 中使用它:
$('#elementID').html(commaSeparateNumber(1234567890));
或
$('#inputID').val(commaSeparateNumber(1234567890));
但是,如果您需要更清洁、更灵活的东西。下面的代码将正确修复小数,删除前导零,并且可以无限使用。感谢评论中的@baacke。
function commaSeparateNumber(val){
val = val.toString().replace(/,/g, ''); //remove existing commas first
var valRZ = val.replace(/^0+/, ''); //remove leading zeros, optional
var valSplit = valRZ.split('.'); //then separate decimals
while (/(\d+)(\d{3})/.test(valSplit[0].toString())){
valSplit[0] = valSplit[0].toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
}
if(valSplit.length == 2){ //if there were decimals
val = valSplit[0] + "." + valSplit[1]; //add decimals back
}else{
val = valSplit[0]; }
return val;
}
在你的 jQuery 中,像这样使用:
$('.your-element').each(function(){
$(this).html(commaSeparateNumber($(this).html()));
});
这是 jsFiddle 。
https://stackoverflow.com/questions/3883342/