没有预期效果的数字之和jquery

时间:2013-08-07 02:29:59

标签: javascript jquery

我对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

所以无论我输入哪个字段,我都希望总数能够改变。如果它只是一个,则总计将其添加到总变量并返回它。如果它是两者的任意组合,则将它们组合并将它们添加到总数中。谢谢你的帮助。

1 个答案:

答案 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

你的小提琴很少有问题

  1. 您正在注册输入密钥事件,在正文密钥处理程序中出错 - 它将导致第一次按键无法被识别,并将在后续调用中触发多个updatetotal调用
  2. 如果字段为空,parseFloat将返回NaN,添加时会导致NaN作为结果
  3. parseFloat只接受一个参数