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));
我正在做一个销售点,我正在使用 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));