Добавить запятые в число в jQuery
У меня эти числа
10999
и 8094
и 456
И все, что я хочу сделать, это добавить запятую в нужное место, если она понадобится, чтобы она выглядела как
10,999
и 8,094
и 456
Все они находятся в теге p, подобном этому <p class="points">10999</p>
и т.д.
Можно ли это сделать?
Я попробовал его здесь с помощью других сообщений http://jsfiddle.net/pdWTU/1/, но, похоже, не может заставить его работать
Спасибо
Джейми
UPDATE
Немного побеспокоился и сумел понять это здесь http://jsfiddle.net/W5jwY/1/
Переход на новый плагин глобализации для лучшего способа сделать это
Спасибо
Джейми
Ответы
Ответ 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));
Ответ 2
Number(10000).toLocaleString('en'); // "10,000"
Ответ 3
Ответ Тимоти Пиреса был очень правильным, но если вам нужно заменить цифры запятыми. Немедленно, как пользовательские типы в текстовом поле, вы можете использовать функцию 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>
Ответ 4
Взгляните на недавно выпущенный плагин глобализации в jQuery от Microsoft
Ответ 5
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));
Ответ 6
Я предполагаю, что вы делаете какую-то локализацию, поэтому посмотрите этот script.
Ответ 7
Посмотрите Numeral.js. Он может форматировать числа, валюту, проценты и поддерживать локализацию.
Ответ 8
Другой способ сделать это:
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));
Ответ 9
другой подход:
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/
Ответ 10
Вот моя версия coffeescript скрипта @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