我有这些数字
10999
、8094
和456
如果需要的话,我想做的就是在正确的位置添加一个逗号,如下所示
10,999
、8,094
和456
这些都在p标记中,比如这个<p class="points">10999</p>
等等。
这是可以做到的吗?
我在其他帖子http://jsfiddle.net/pdWTU/1/的帮助下尝试过了,但似乎不能让它工作
谢谢
杰米
更新
我花了点心思,并设法在这里弄明白了http://jsfiddle.net/W5jwY/1/
看一下新的Globalization插件,找到更好的实现方法
谢谢
杰米
发布于 2012-10-18 13:39:12
适用于所有浏览器,这就是你所需要的。
function commaSeparateNumber(val){
while (/(\d+)(\d{3})/.test(val.toString())){
val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
}
return val;
}
这篇文章写得紧凑,而且切中要点,这要归功于regex。这是直接的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。
发布于 2013-09-08 02:16:19
Number(10000).toLocaleString('en'); // "10,000"
发布于 2013-11-13 17:58:20
Timothy Pirez的回答非常正确,但如果您需要在用户输入文本字段时立即用逗号替换数字,您可能需要使用Keyup函数。
$('#textfield').live('keyup', function (event) {
var value=$('#textfield').val();
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
var newvalue=value.replace(/,/g, '');
var valuewithcomma=Number(newvalue).toLocaleString('en');
$('#textfield').val(valuewithcomma);
});
<form><input type="text" id="textfield" ></form>
https://stackoverflow.com/questions/3883342
复制相似问题