在jQuery中添加逗号给一个数字
我有这些数字
10999
和8094
和456
所有我想要做的就是在正确的地方添加一个逗号,如果它需要它,所以它看起来像这样
10,999
和8,094
和456
这些都是在这个标签,像这样<p class="points">10999</p>
等
可以这样做吗?
我试图在这里与其他职位http://jsfiddle.net/pdWTU/1/的帮助,但似乎无法得到它的工作
谢谢
杰米
UPDATE
陷入了一下,并设法弄清楚这里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; }
写这是紧凑的,到了一定的地步,多亏了正则expression式。 这是直的JS,但你可以在你的jQuery中使用它:
$('#elementID').html(commaSeparateNumber(1234567890));
要么
$('#inputID').val(commaSeparateNumber(1234567890));
Number(10000).toLocaleString('en'); // "10,000"
蒂莫西·皮雷斯的答案是非常正确的,但如果你需要用逗号replace数字立即作为文本字段中的用户types,你可能想要使用键盘function。
$('#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>
看看最近发布的全球化插件到微软的jQuery
function delimitNumbers(str) { return (str + "").replace(/\b(\d+)((\.\d+)*)\b/g, function(a, b, c) { return (b.charAt(0) > 0 && !(c || ".").lastIndexOf(".") ? b.replace(/(\d)(?=(\d{3})+$)/g, "$1,") : b) + c; }); } alert(delimitNumbers(1234567890));
我猜你正在做某种本地化,所以看看这个脚本 。
看看Numeral.js 。 它可以格式化数字,货币,百分比,并支持本地化。
另一种方法来做到这一点:
function addCommas(n){ var s = "", r; while (n) { r = n % 1000; s = r + s; n = (n - r)/1000; s = (n ? "," : "") + s; } return s; } alert(addCommas(12345678));
另一种方法:
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; } var a = addCommas(10000.00); alert(a);
另一个惊人的插件: http : //www.teamdf.com/web/jquery-number-format/178/
这是@ baacke的小提琴的咖啡的脚本版本在@Timothy Perez的评论中提供
class Helpers @intComma: (number) -> # remove any existing commas comma = /,/g val = number.toString().replace comma, '' # separate the decimals valSplit = val.split '.' integer = valSplit[0].toString() expression = /(\d+)(\d{3})/ while expression.test(integer) withComma = "$1,$2" integer = integer.toString().replace expression, withComma # recombine with decimals if any val = integer if valSplit.length == 2 val = "#{val}.#{valSplit[1]}" return val