代码之家  ›  专栏  ›  技术社区  ›  Jamie Taylor

在jquery中向数字添加逗号

  •  80
  • Jamie Taylor  · 技术社区  · 15 年前

    我有这些号码

    10999 8094 456

    我只想在需要的地方加一个逗号,看起来像这样

    10,999 8,094 四百五十六

    这些都在这样的P标签中 <p class="points">10999</p> 等。

    可以这样做吗?

    我曾在其他岗位的帮助下尝试过 http://jsfiddle.net/pdWTU/1/ 但似乎不能让它工作

    谢谢

    杰米

    更新

    搞得一团糟,总算弄明白了。 http://jsfiddle.net/W5jwY/1/

    去看看新的全球化插件,寻找更好的方法。

    谢谢

    杰米

    11 回复  |  直到 8 年前
        1
  •  136
  •   Timothy Perez    11 年前

    适用于所有浏览器,这是您所需要的。

      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));
    
        2
  •  125
  •   aboutaaron    11 年前
    Number(10000).toLocaleString('en');  // "10,000"
    
        3
  •  2
  •   Tosin Onikute    10 年前

    Timothy Pirez的回答是非常正确的,但是如果您需要在textfield中立即用逗号替换数字作为用户类型,那么您可能需要使用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
  •  1
  •   Jakub Konecki    15 年前

    看看最近发布的 Globalization plugin 至jquery by Microsoft

        5
  •  1
  •   Sumith Harshan    13 年前
        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
  •  0
  •   Deniz Dogan    15 年前

    我猜你在做某种本地化,所以看看 this script .

        7
  •  0
  •   adamwdraper    13 年前

    看一看 Numeral.js . 它可以格式化数字、货币、百分比,并支持本地化。

        8
  •  0
  •   TinhNQ    8 年前

    使用TolocalString 参考文献 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
        9
  •  -1
  •   abhiklpm    12 年前

    另一种方法:

    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
  •  -1
  •   theWanderer4865    10 年前

    另一种方法是:

    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));
    
        11
  •  -1
  •   pymarco    10 年前

    这是我在对@timothy perez的评论中提供的@baacke's fiddle的咖啡说明版本。

    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