добавить запятые к числу в JQuery

У меня есть эти цифры

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 для лучшего способа сделать это

Спасибо

Джейми

 Html Tosin19 мая 2018 г., 19:28
Реальный ответ на этот вопрос здесь:stackoverflow.com/a/2632502/1860982
 zhon08 окт. 2013 г., 01:32
+1 за вашу скрипку. Вы должны включить свое решение в свое обновление:<number string>.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',')
 epascarello07 окт. 2010 г., 17:46
Связанный вопрос здесь:stackoverflow.com/questions/2901102/...
 zhon08 окт. 2013 г., 01:54
Я хотел бы +100 для вашего решения: Regex, говоря не граница слова, а затем положительный взгляд перед 3 цифрами, возможно, повторяется, а не цифра. Потрясающие!
 Josh Bilderback21 окт. 2015 г., 18:19
Это решение было по большей части лучшим, но у меня не получилось. К сожалению, мне нужно отображать цифры с 4, а иногда и с 5 знаками после запятой. Люди, на которых я работаю, имеют дело с большим количеством транзакций и долями пенни, которые составляют в сумме 100 или 1000 долларов (вспомним Office Space). Я просто добавил код на вашу скрипку, чтобы он мог обрабатывать десятичные разряды после 3:http://jsfiddle.net/W5jwY/554/

Ответы на вопрос(11)

Еще один способ сделать это:

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 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));

другой подход:

{
    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/

но если вам нужно заменить числа запятыми. Немедленно, как пользовательские типы в текстовом поле, вы можете использовать функцию 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>
 Hugh Seagraves19 июл. 2016 г., 22:24
Это также работает для «вставить».
Решение Вопроса

это все, что вам нужно.

  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));
 Timothy Perez15 янв. 2014 г., 22:26
Мне нравятся черепахи!
 baacke13 февр. 2014 г., 21:07
Два вопроса с этим ответом: 1. Вызов функции более одного раза с одним и тем же значением приведет к появлению запятых в неправильных местах (например, событиях keyup). 2. Эта функция не обрабатывает десятичные дроби должным образом и добавляет запятые внутри десятичных дробей. Видеть этоJSFiddle для модифицированной версии, которая исправляет оба.
 Alex Harvey02 июл. 2015 г., 17:12
Место появления запятой или точки определяется локалью. Стандартная библиотека JS уже может сделать это для вас.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
 Pyrolistical12 янв. 2014 г., 23:17
Ответ user1655655 намного лучше
 Timothy Perez19 февр. 2014 г., 16:38
@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
 pymarco03 нояб. 2017 г., 20:58
Пожалуйста, объясните отрицательный голос.
Number(10000).toLocaleString('en');  // "10,000"
 Isaac Askew30 мар. 2015 г., 00:10
Это несовместимо во всех браузерах и совсем не работает на iPad.
 linqu19 дек. 2013 г., 14:52
спасибо за этот совет, гораздо лучше, чем написание пользовательских функций или включение плагина. для меня ответ # 1!
 Fillip Peyton26 мар. 2015 г., 18:00
Умная техника, если число не имеет начального нуля и поддержка браузера не предшествует IE11.
 Aamir Afridi19 мар. 2015 г., 16:53
Попробуй этоNumber(012).toLocaleString('en') : |
 Luke15 янв. 2014 г., 06:22
Это замечательно и работает в большинстве браузеров для настольных компьютеров, но остерегайтесь, что поддержка мобильных браузеров сейчас ограничена ...developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
 ahgood28 сент. 2013 г., 17:15
Это самое простое решение, и оно идеально подходит для меня. Спасибо!
 Venryx13 мая 2017 г., 13:11
Обратите внимание, что если число имеет десятичную часть, этот подход урезает десятичную часть только до первых 3 цифр. Если вы хотите сохранить десятичную часть без изменений, разбейте ее на целую и дробную части и измените только целую часть. Пример:jsfiddle.net/tqb4x8dp
 Tom Spencer28 янв. 2015 г., 13:42
Для тех, кто хочет использовать это с Node.js, он не будет работать, если вы не перекомпилируете движок v8 для включения i18n:stackoverflow.com/questions/23571043/...
 Venryx13 мая 2017 г., 13:07
@FillipPeyton Если вас беспокоит случай с начальным нулем, просто сделайтеNumber("012").toLocaleString("en"); (другими словами, укажите число в виде строки, а не числового литерала - так вы обычно его и используете)

Numeral.js, Он может форматировать числа, валюту, проценты и имеет поддержку для локализации.

Я предполагаю, что вы делаете какую-то локализацию, так что взгляните наэтот скрипт.

Использование toLocaleString ссылка наhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

function formatComma(value, sep = 0) {
      return Number(value).toLocaleString("ja-JP", { style: "currency", currency: "JPY", minimumFractionDigits: sep });
    }
console.log(formatComma(123456789, 2)); // ¥123,456,789.00
console.log(formatComma(123456789, 0)); // ¥123,456,789
console.log(formatComma(1234, 0)); // ¥1,234

Плагин глобализации в jQuery от Microsoft

Ваш ответ на вопрос