2

いくつかの数値を計算するために使用しているフォームがあります。フォームの最後の 3 つの入力フィールドは、電卓の結果を表示するため無効になっています。

次のjavascript/jqueryを使用して、ユーザーが編集可能なフィールドにコンマを追加していますが、これはうまく機能しますが、「結果」フィールドにコンマを追加する方法が見つからないようです:

$('input.seperator').change(function(event){
  // skip for arrow keys
  if(event.which >= 37 && event.which <= 40){
      event.preventDefault();
  }
  var $this = $(this);
  var num = $this.val().replace(/,/gi, "").split("").reverse().join("");

  var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));

  // the following line has been simplified. Revision history contains original.
  $this.val(num2);
});

function RemoveRougeChar(convertString){

if(convertString.substring(0,1) == ","){

return convertString.substring(1, convertString.length)            

}

return convertString;
}

これは私がフィールドに入力するために使用しているものです。基本的にフィールドは結果をドルで表示するため、3つの数字ごとにコンマを追加しようとしています:

$('#incorrect-payment').val(fieldK);
$('#correcting-payment').val(fieldL);
$('#total-cost').val(fieldM);
4

2 に答える 2

1

次のような関数を使用したいと思います。

function FormatCurrency(amount, showDecimals) {

    if (showDecimals == null)
        showDecimals = true;

    var i = parseFloat(amount);
    if (isNaN(i)) { i = 0.00; }
    var minus = false;
    if (i < 0) { minus = true; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;
    s = new String(i);

    if (showDecimals) {
    if (s.indexOf('.') < 0) { s += '.00'; }
    if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
    }

    //s = minus + s;
    s = '$' + FormatCommas(s, showDecimals);
    if (minus)
        s = "(" + s + ")";
    return s;
}

function FormatCommas(amount, showDecimals) {
    if (showDecimals == null)
        showDecimals = true;


    var delimiter = ","; // replace comma if desired
    var a = amount.split('.', 2)
    var d = a[1];
    var i = parseInt(a[0]);
    if (isNaN(i)) { return ''; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    var n = new String(i);
    var a = [];
    while (n.length > 3) {
        var nn = n.substr(n.length - 3);
        a.unshift(nn);
        n = n.substr(0, n.length - 3);
    }
    if (n.length > 0) { a.unshift(n); }
    n = a.join(delimiter);

    if (!showDecimals) {
        amount = n;
    }
    else {
    if (d.length < 1) { amount = n; }
    else { amount = n + '.' + d; }
    }
    amount = minus + amount;
    return amount;
}
于 2013-08-21T19:00:41.760 に答える