accounting.js中的小数如何加小数点?

How to add decimal point to decimal number in accounting.js?

我正在做一个销售点,我正在使用 accounting.js 来格式化支付模块中正在支付的金额的数字。

显然我希望该字段有一个浮动值,所以我有这个虚拟小键盘,当单击它时它将连接每个按钮的值,如下所示:

但是当我点击小数点按钮时它不起作用。这是我到目前为止尝试过的方法,不确定我遗漏了什么。

// Payment Numpad  
$('section.payment-numpad .number-char').click(function(){

    let num = $(this).data('action');
    let defaultAmt = $('td.col-tendered.edit').text().replace(/,/g, "");
    let tendered;
    if(defaultAmt === "0.00"){
        tendered = num;
    }else{
        tendered = defaultAmt + num;
    }

    $('td.col-tendered.edit').text(accounting.formatNumber(parseFloat(tendered)));
    return false;
});

我也在accounting.js中尝试了.toFixed(2),但还是不行。

更新:这里有一个video供参考

它在文档中。全局更改设置...

// Settings object that controls default parameters for library methods:
accounting.settings = {
    currency: {
        symbol : "$",   // default currency symbol is '$'
        format: "%s%v", // controls output: %s = symbol, %v = value/number (can be object: see below)
        decimal : ".",  // decimal point separator
        thousand: ",",  // thousands separator
        precision : 2   // decimal places
    },
    number: {
        precision : 0,  // default precision on numbers is 0
        thousand: ",",
        decimal : "."
    }
}

或在本地更改设置...

// Standard usage and parameters (returns string):
accounting.formatNumber(number, [precision = 0], [thousand = ","], [decimal = "."])

试试这个,希望对你有帮助:)

function operator(amt, num) {
    let val = '';
    switch (num) {
     case '.':
      if (parseFloat(amt) == 0) {
       val = '0.';
      } else {
       if (amt.indexOf('.') > -1) {
        val = amt;
       } else {
        val = amt + '.';
       }
      }
      break;
    }
    return val;
   }

   $('section.payment-numpad .number-char').click(function () {
    let that = $(this),
            data = that.data(),
            num = data.action;

    let defaultAmt = $('.col-tendered.edit').data('value');
    let tendered;

    if (isNaN(parseFloat(defaultAmt))) {
     defaultAmt = 0;
    }

    if (that.hasClass('operator')) {
     tendered = operator(defaultAmt, num);
    } else {
     tendered = defaultAmt + '' + num;
    }

    $('.value').text(tendered);
    $('.col-tendered.edit').attr('data-value', tendered).data('value', tendered);
    var precision = 2;
    /*if (tendered != '') {
     var s = tendered.split('.');
     if (s[1] != undefined) {
      precision = s[1].length;
     }
    }*/
    $('.col-tendered.edit').text(accounting.formatNumber(parseFloat(tendered), precision));
    return false;
   });
table {
  width: 100%;    
}
.number-char {
  padding: 10px;
  background: #000;
  color: #fff;
  cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="http://openexchangerates.github.io/accounting.js/accounting.min.js"></script>
  <section class="payment-numpad">
   <div class="col-tendered edit" data-value=""></div>
   <!--<div>Input Value: <span class="value"></span></div>-->
   <table>
    <tr>
     <td class="number-char" data-action="1">1</td>
     <td class="number-char" data-action="2">2</td>
     <td class="number-char" data-action="3">3</td>
    </tr>
    <tr>
     <td class="number-char" data-action="4">4</td>
     <td class="number-char" data-action="5">5</td>
     <td class="number-char" data-action="6">6</td>
    </tr>
    <tr>
     <td class="number-char" data-action="7">7</td>
     <td class="number-char" data-action="8">8</td>
     <td class="number-char" data-action="9">9</td>
    </tr>
    <tr>
     <td class="number-char" data-action="0">0</td>
     <td class="number-char operator" data-action=".">.</td>
    </tr>
   </table>
  </section>

使用precision设置小数点后固定值

var precision = 2;
$('.col-tendered.edit').text(accounting.formatNumber(parseFloat(tendered), precision));