Добавить запятые в число в 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>

Ответ 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