web-dev-qa-db-ja.com

jQueryの数値にコンマを追加します

これらの番号があります

10999および8094および456

そして、私がしたいのは、必要な場合は正しい場所にコンマを追加して、このようにすることです

10,999および8,094および456

これらはすべてこの<p class="points">10999</p>などのようなpタグ内にあります。

できますか?

私はここで他の投稿の助けを借りてそれを試みました http://jsfiddle.net/pdWTU/1/ しかし、それを動作させることができないようです

ありがとう

ジェイミー

[〜#〜] update [〜#〜]

少し混乱し、ここでそれを理解することができました http://jsfiddle.net/W5jwY/1/

それを行うより良い方法のために新しいグローバリゼーションプラグインを見ていきます

ありがとう

ジェイミー

81
Jamie Taylor

すべてのブラウザで動作します。これで十分です。

  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));
137
Timothy Perez
Number(10000).toLocaleString('en');  // "10,000"
126
sonnenhaft

Timothy Pirezの答えは非常に正しかったのですが、ユーザーがテキストフィールドに入力すると同時に数値をコンマに置き換える必要がある場合は、キーアップ機能を使用することをお勧めします。

      $('#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

Numeral.js をご覧ください。数値、通貨、パーセンテージをフォーマットでき、ローカライズをサポートしています。

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

最近リリースされたグローバリゼーションプラグインをMicrosoftによるjQueryでご覧ください

1
Jakub Konecki

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
0

何らかのローカライズを行っていると推測しているので、 このスクリプト をご覧ください。

0
Deniz Dogan