始终显示总数并停止显示NaN

时间:2014-01-21 18:16:09

标签: javascript jquery html forms

除非我将值设为零,否则为什么显示NaN?我希望保持一个运行总计并只显示占位符,但除非我将输入的值设为0,否则它在显示总数的总div中显示为NaN?

$("body").on("blur", "#serviceContract,#gapInsurance,#extendedWarranty,#amtOwedOnTrade,#tradeInValue,#manufacturerRebate,#downPayment,#estimatedTaxesAndFees,#vehiclePrice",function() {
    updateTotal();
});
var updateTotal = function() {
    var input1 = parseInt($('#vehiclePrice').val());
    var input2 = parseInt($('#estimatedTaxesAndFees').val());
    var input3 = parseInt($('#downPayment').val());
    var input4 = parseInt($('#manufacturerRebate').val());
    var input5 = parseInt($('#tradeInValue').val());
    var input6 = parseInt($('#amtOwedOnTrade').val());
    var input7 = parseInt($('#extendedWarranty').val());
    var input8 = parseInt($('#gapInsurance').val());
    var input9 = parseInt($('#serviceContract').val());
   if (input1 ==undefined || input2 == undefined || input3 == undefined || input4 == undefined || input5 == undefined || input6 == undefined || input7 == undefined || input8 == undefined ||input9 == undefined ) {
        $('#total').text(total);
    } else {
        var max = 40000;
        var total = input1 + input2 - input3 - input4 - input5 + input6 + input7 + input8 + input9;

        if (total > max) {
            $('#total').text('The maximum is ' + max);
            $('#total1').val(40000);
        } else {
            $('#total').text(total);
            $('#total1').val(total);
        }
    }
};

das fiddle

1 个答案:

答案 0 :(得分:3)

因为当该字段为空时,它会解析任何内容,返回NaN。

您可以通过在每一行执行此操作来阻止:

var input1 = parseInt($('#vehiclePrice').val()) || 0;

如果val为“falsy”,则计算为0。


正如CodeMoose所说:

在使用parseInt时始终定义base-10:parseInt($('#vehiclePrice').val(), 10)

该参数是 radix

  

基数

     

表示上述字符串的基数的整数。始终指定此参数以消除读者混淆并保证可预测的行为。当未指定基数时,不同的实现会产生不同的结果。

取自MDN