我对javascript
/ jQuery
相对较新,而且我无法获得预期的结果。即使只有一个输入有值,我也希望显示总数,否则我希望显示0。但是现在它需要在显示总和之前输入所有3个值。当我输入输入时,它不会简单地将下一个输入添加到总数中。我可以想象一系列冗长的条件语句,它们会交叉检查每个输入的.length并根据每个输入返回总数。当然必须有一个更容易/更清洁的方式。如果这是java我将使用总+ =(变量),它将在我去的时候总计它们。这似乎不适用于此。
$('#invoice_labor, #invoice_materials, #invoice_other').keyup(function() {
if ($('#invoice_labor').length || $('#invoice_materials').length || $('#invoice_other').length ) {
updateTotal();
} else {
$('#invoice_total').html(0);
}
});
var updateTotal = function () {
var input1 = parseFloat($('#invoice_labor').val(), 2);
var input2 = parseFloat($('#invoice_materials').val(), 2);
var input3 = parseFloat($('#invoice_other').val(), 2);
var total = input1 + input2 + input3;
$('#invoice_total').html(total);
$("#invoice_total").html(parseFloat($("#invoice_total").html()).toFixed(2));
};
这是我正在修补的fiddle。
所以无论我输入哪个字段,我都希望总数能够改变。如果它只是一个,则总计将其添加到总变量并返回它。如果它是两者的任意组合,则将它们组合并将它们添加到总数中。谢谢你的帮助。
答案 0 :(得分:2)
尝试
$('#invoice_labor, #invoice_materials, #invoice_other').keyup(function() {
updateTotal();
});
var updateTotal = function () {
var input1 = parseFloat($('#invoice_labor').val()) || 0;
var input2 = parseFloat($('#invoice_materials').val()) || 0;
var input3 = parseFloat($('#invoice_other').val()) || 0;
var total = input1 + input2 + input3;
$("#invoice_total").html(total.toFixed(2));
};
演示:Fiddle
你的小提琴很少有问题