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 回答
0

可能您可能希望通过 javascript 为您的三个只读输入字段手动触发更改事件。使用 jquery触发器。我不确定,但如果没有用户可以更改这些值,那么使用只读输入字段似乎是个坏主意。如果具有一定安全性的用户可以编辑这些而有些则不能,通常具有只读输入字段是好的。

于 2013-08-21T18:59:59.900 回答