web-dev-qa-db-fra.com

ajouter des virgules à un nombre dans jQuery

J'ai ces chiffres

10999 et 8094 et 456

Et tout ce que je veux, c’est d’ajouter une virgule au bon endroit si elle en a besoin pour qu’elle ressemble à ceci

10,999 et 8,094 et 456

Ce sont tous dans une balise p comme ceci <p class="points">10999</p> etc.

Cela peut-il être fait?

Je l'ai essayé ici avec l'aide d'autres messages http://jsfiddle.net/pdWTU/1/ mais n'arrive pas à le faire fonctionner

Merci

Jamie

[~ # ~] met à jour [~ # ~]

J'ai déconné un peu et réussi à le comprendre ici http://jsfiddle.net/W5jwY/1/

Allez regarder le nouveau plugin de globalisation pour une meilleure façon de le faire

Merci

Jamie

81
Jamie Taylor

Fonctionne sur tous les navigateurs, c'est tout ce dont vous avez besoin.

  function commaSeparateNumber(val){
    while (/(\d+)(\d{3})/.test(val.toString())){
      val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
    }
    return val;
  }

Cela a été écrit pour être compact, et au point, grâce à regex. Ceci est directement JS, mais vous pouvez l’utiliser dans votre jQuery de la manière suivante:

$('#elementID').html(commaSeparateNumber(1234567890));

ou

$('#inputID').val(commaSeparateNumber(1234567890));
137
Timothy Perez
Number(10000).toLocaleString('en');  // "10,000"
126
sonnenhaft

La réponse de Timothy Pirez était très correcte, mais si vous devez remplacer les chiffres par des virgules dès que l'utilisateur saisit textfield, vous voudrez peut-être utiliser la fonction 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>
2
Html Tosin

Jetez un oeil à Numeral.js . Il peut formater des nombres, des devises, des pourcentages et prend en charge la localisation.

1
adamwdraper
    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));
1
Sumith Harshan

Jetez un coup d'œil à la récente version plug-in de globalisation de jQuery par Microsoft

1
Jakub Konecki

Utilisation de toLocaleString ref at 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
0
Tính Ngô Quang

Je suppose que vous faites une sorte de localisation, jetez donc un œil à ce script .

0
Deniz Dogan