将逗号添加到jQuery中的数字


82

我有这些数字

109998094456

我想要做的就是在需要的地方添加一个逗号,所以看起来像这样

10,9998,094456

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

能做到吗

我在其他帖子http://jsfiddle.net/pdWTU/1/的帮助下尝试了此操作但似乎无法使其正常工作

谢谢

杰米

更新

有点混乱并设法在这里解决 http://jsfiddle.net/W5jwY/1/

将研究新的全球化插件,以获得更好的实现方式

谢谢

杰米



3
+1为您的小提琴。您应该在更新中包含您的解决方案:<number string>.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',')
zhon 2013年

2
我希望能为您的解决方案+100:正则表达式说不是单词边界,其后是3位数字的正向外观,可能是重复出现而不是数字。太棒了!
zhon 2013年

在大多数情况下,此解决方案是最好的,但对我而言却不太奏效。不幸的是,我需要显示具有4位,有时是5位小数的数字。我工作的人需要处理大量交易,一分钱的零头加起来就是100美元或1000美元(想想Office Space)。我只是在您的提琴上拍了一些代码,以允许它处理3以后的小数位:http
Josh Bilderback

此问题的真实答案在这里:stackoverflow.com/a/2632502/1860982
Tosin Onikute

Answers:


138

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

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

4
user1655655的答案要好得多
Pyrolistical 2014年

10
我喜欢乌龟!
蒂莫西·佩雷斯

7
这个答案有两个问题:1.用相同的值多次调用该函数将导致在错误的位置出现逗号(例如,按键事件)。2.此功能无法正确处理小数,并且会在小数内添加逗号。请参阅此JSFiddle,以获取同时解决这两个问题的修改版本。
baacke 2014年

1
@baacke这个函数的想法是苗条的,所以我没有考虑在相同的var或小数点上两次调用它(因为它不在问题中)。无论哪种方式,您的小提琴示例在需要小数的情况下都非常有用,谢谢。
蒂莫西·佩雷斯

逗号或句点出现的位置由区域设置确定。JS标准库已经可以为您完成此操作。developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
亚历克斯·哈维

130
Number(10000).toLocaleString('en');  // "10,000"

6
这是最简单的解决方案,非常适合我。谢谢!
ahgood 2013年

3
谢谢您的提示,这比编写自定义函数或包含插件要好得多。对我来说,答案是#1!
linqu 2013年

5
这是伟大的,在大多数桌面浏览器的作品,但要注意它在移动浏览器的支持有限,现在... developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
卢克

2
对于任何希望与Node.js的使用,它不会工作,除非你重新编译V8发动机,包括国际化:stackoverflow.com/questions/23571043/...
汤姆·斯宾塞

3
跨浏览器不一致,并且在iPad上根本不起作用。
艾萨克·阿斯基

3

蒂莫西·皮雷斯(Timothy Pirez)的回答非常正确,但是如果您需要立即用逗号替换数字,则在文本字段中输入用户类型时,您可能想使用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>



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


0

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString中使用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


-1

另一种方法:

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/


-1

另一种方法是:

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

-1

这是@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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.