我的ASP.Net页面上有一个屏幕,根据用户的选择,它们提供1到5个文本框。这些框允许用户输入金额。
当用户进入屏幕时,根据特定条件,显示一定数量的这些编辑框。它们没有隐藏......如果我想要3个盒子,那么屏幕上只有3个盒子。
在javascript中,当用户输入金额时,会显示“总计”编辑框,汇总每个框中的值。
因此,当用户键入时,总更新中的值将计算所有文本框的总计:
我用:
onkeyup="calculateTotal()"
编辑框上的。
为此,我使用以下代码:
function calculateTotal() {
var amt0 = $('.txtAmount0').val();
var amt1 = $('.txtAmount1').val();
var amt2 = $('.txtAmount2').val();
var amt3 = $('.txtAmount3').val();
var amt4 = $('.txtAmount4').val();
var amt = Number(amt0);
if (!isNaN(amt1))
amt += Number(amt1);
if (!isNaN(amt2))
amt += Number(amt2);
if (!isNaN(amt3))
amt += Number(amt3);
if (!isNaN(amt4))
amt += Number(amt4);
$('.txtTotalAmount').text('$' + amt);
}
第一个问题是,我似乎在计算中失去了一些精确度:
我不确定为什么我会得到一个奇怪的舍入问题,当我所做的只是总结时。
此外,它看起来有点脏,如果我添加了更多的盒子,我需要修改代码。
这段代码有更好的工作方式吗?
答案 0 :(得分:1)
你可以这样:
var sum = 0;
$("input[class*='txtAmount']").each(function() {
if ($.isNumeric($(this).val()) ) {
sum += Number($(this).val());
}
});
$('.txtTotalAmount').text('$' + sum.toFixed(2));