2012-01-05 19 views
0

jQueryのスライダプラグインを使用しようとしていますが、30402424のように30,402,424などのコンマで出力をフォーマットする必要があります。jQueryで数値を書式設定する簡単な方法

私はそれがjavascriptで可能であることを知っていますが、私が見つけた唯一の方法は非常に長く巻き込まれています。私は

http://jsfiddle.net/EX5U7/

+0

Dupe:http://stackoverflow.com/questions/2646385/add-a-thousands-separator-to-a-total-with-javascript-or-jquery - すべての正解以下はリンクされた質問からの@ dave1010の解決策を実装しています –

答えて

10

のJavascript自体はあなたが必要として数値をフォーマットをサポートしていません...ので、あなたは私が何を意味するか見ることができますフィドルを作成しましたが、いくつかのグーグルで私は、次の身近な解決策を発見しました私は過去に使用していましたが、より良いコード品質のために若干改訂されました。

function addCommas(numberString) { 
    numberString += ''; 
    var x = numberString.split('.'), 
     x1 = x[0], 
     x2 = x.length > 1 ? '.' + x[1] : '', 
     rgxp = /(\d+)(\d{3})/; 

    while (rgxp.test(x1)) { 
    x1 = x1.replace(rgxp, '$1' + ',' + '$2'); 
    } 

    return x1 + x2; 
} 

出典:http://www.mredkj.com/javascript/numberFormat.html

更新フィドル:http://jsfiddle.net/EX5U7/8/


は、ここであなただけ露骨にコンマごとに3を加えるよりもさらに多くを行うにできるように、JavaScriptでPHPのnumber_format機能を実装して、別の解決策、です番号:

function number_format (number, decimals, dec_point, thousands_sep) { 
    number = (number + '').replace(/[^0-9+\-Ee.]/g, ''); 
    var n = !isFinite(+number) ? 0 : +number, 
     prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), 
     sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, 
     dec = (typeof dec_point === 'undefined') ? '.' : dec_point, 
     s = '', 
     toFixedFix = function (n, prec) { 
      var k = Math.pow(10, prec); 
      return '' + Math.round(n * k)/k; 
     }; 
    // Fix for IE parseFloat(0.55).toFixed(0) = 0; 
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); 
    if (s[0].length > 3) { 
     s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); 
    } 
    if ((s[1] || '').length < prec) { 
     s[1] = s[1] || ''; 
     s[1] += new Array(prec - s[1].length + 1).join('0'); 
    } 
    return s.join(dec); 
} 

使用法:中number_format(123456.789, 2, '.', ',');結果123,456.79

出典:http://phpjs.org/functions/number_format:481

フィドル:http://jsfiddle.net/EX5U7/10/

+1

リンク元の関連する部分をあなたの答えに含め、正しい参照を付けました。スタックオーバーフロー時のすべての回答は、リンクをたどれずに理解できるはずです。 –

+0

+1正確に私がやったこと:-) – ManseUK

+0

ノートをありがとう、ロブ。まだあまりにも多くの質問にまだ答えなかった!今私の答えを訂正します。 :) –

3

使用次addCommas方法:

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

の作業例:http://jsfiddle.net/EX5U7/1/

+1

なぜdownvote?私はソースをリンクし、それは仕事ですか? – ManseUK

0

書式設定数、お金と通貨のための小さなJavaScriptライブラリです。

ui.value = (ui.value).toString().split("").reverse().join("").replace(/(\d{3})(?=\d)/g,"$1,").split("").reverse("").join("") 
+0

溶液に欠陥があります。明らかに間違っている£275,579,809,0などの番号を許可します。 £2,755,798,090 –

+0

する必要があります。右の文字列を置き換える必要があります。今この作品 – abuduba

+0

Downvoteが削除されました! –

0

これは複製です。

しかし、あなたの情報については、This Questionで提供ソリューションは、私はこれを試して、あなたのJSFiddle

$(function() { 
     $("#slider").slider({ 
      value:100, 
      min: 0, 
      max: 5000000000, 
      step: 1, 
      slide: function(event, ui) { 
       $("#amount").val("£" + addCommas(ui.value)); 
      } 
     }); 
     $("#amount").val("£" + addCommas($("#slider").slider("value"))); 
    }); 

function addCommas(nStr) { 
    nStr += ''; 
    var x = nStr.split('.'); 
    var x1 = x[0]; 
    var x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 
0

を編集することができ:

function formatNumber(n){ 
    n += ''; 
    x = n.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; 
} 

は、私はこれを得たところから覚えていないが、それを使用していますここに:https://github.com/amantur/jquery.ui.counter

関連する問題