0

HTML テンプレートがあります。テンプレート内のすべての数字を検索し、3 桁ごとにコンマを挿入する一般化関数を作成したいと考えています。現在、私はこの関数を使用しています。この関数は、入力として値を取り、コンマ区切り形式に変換する場合があります。

function commafy( num ) {
    var str = num.toString().split('.');
    if (str[0].length >= 5) {
        str[0] = str[0].replace(/(\d)(?=(\d{3})+$)/g, '$1,');
    }
    if (str[1] && str[1].length >= 5) {
        str[1] = str[1].replace(/(\d{3})/g, '$1 ');
    }
    return str.join('.');
}

私のテンプレートには、ラベル、テーブル、および入力フィールドが含まれています。
どうすればそれを行うことができますか?

4

4 に答える 4

1

ワーキングデモhttp://jsfiddle.net/cse_tushar/P3CSF/

この素晴らしい関数を数値の書式設定に使用できます

例えば

var num=123456789.12345
num.formatMoney(5) //returns 123,456,789.12345 
num.formatMoney(2) //returns 123,456,789.12

機能コードはこちら:-

Number.prototype.formatMoney = function(c, d, t){
var n = this, 
    c = isNaN(c = Math.abs(c)) ? 2 : c, 
    d = d == undefined ? "." : d, 
    t = t == undefined ? "," : t, 
    s = n < 0 ? "-" : "", 
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
    j = (j = i.length) > 3 ? j % 3 : 0;
   return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
 };

console.log((123456789.12345).formatMoney(5, '.', ','));
console.log((123456789.12345).formatMoney(2));

プラグインが必要な場合:-プラグイン

于 2013-07-26T07:19:41.953 に答える
1
  1. テンプレートが数字の場所を知っている場合は、それらのクラスを配置するだけです。テンプレートがレンダリングされた後、番号を選択して一緒に変更します。注: format_currencyという jquery プラグインがあります。

  2. テンプレートが認識しない場合は、レンダリングが完了した後に実行します。

    $('#TEMPLATE_CONTAINER input,#TEMPLATE_CONTAINER label,#TEMPLATE_CONTAINER td').each(function(){          
        FORMAT($(this));//format only if $(this).text() is a number     
    })
    
于 2013-07-26T06:35:44.923 に答える
0

多くの方法があります:

  1. お金の値を<span class='money'></span>スパン内にラップし、jQuery フォーマットを使用してこれらの値をDOM ready.
  2. Angular JS を使用すると、お金の値にディレクティブを指定できます。ng-moneyたとえば、そのスパンのコンテンツをフォーマットするようにそのディレクティブを定義できます。
  3. 3番目の方法は、すでにcommifiedされたお金の値を送信し( :D と述べたように)、それらをテンプレート内で直接使用することです。通常、サーバー側では、数値と値をフォーマットする方が簡単です。
于 2013-07-26T06:03:46.897 に答える
0

私はおそらくあなたが望むように機能する解決策を持っています。これは、問題に対する私の理解の範囲内です。

以下に数行のコードを示します。フィドルもリンクされています

var formatedNumbers=function(){
    count=document.getElementsByTagName('input').length;

    for(i=0;i<count;i++){
        if(!isNaN(document.getElementsByTagName('input')[i].value) && document.getElementsByTagName('input')[i].value!=""){
            document.getElementsByTagName('input')[i].value=formatNumber(document.getElementsByTagName('input')[i].value);
        }
    }
};
于 2013-07-26T10:17:49.807 に答える