2014-01-27 6 views
-2

У меня есть скрипт, который выполняет несколько уравнений на основе входных значений. Все работает правильно, за исключением того, что начальный дисплей отображается неопределенным, если не выбраны никакие переключатели. Поэтому, если пользователь просто нажимает на одно из полей ввода, тогда дисплей (нижняя таблица в скрипте) возвращает неопределенное значение. Но если я нажму на радио, то он будет работать так, как ожидалось. Мне нужно, чтобы начальное значение APR устанавливалось на определенный процент, если пользователь ничего не делает, а просто щелкает по входам.Получение undefined on blur

это много HTML и JQuery, так что я положил большую часть в скрипку, но здесь основной сценарий:

$(document).ready(function() { 
var updateTotal, currentAPR; 

$("body").on("blur", "#vehiclePrice,#estimatedTaxesAndFees,#downPayment,#manufacturerRebate,#tradeInValue,#amtOwedOnTrade,#extendedWarranty,#gapInsurance,#serviceContract", function() { 
    updateTotal(currentAPR); 
}); 
updateTotal = function (apr) { 
    currentAPR = apr; 
    $(".output2").html(apr + "<span class=\"expandedTermsText\"> APR<\/span>"); 

    var input1 = parseInt($('#vehiclePrice').val()) || 0; 
    var input2 = parseInt($('#estimatedTaxesAndFees').val()) || 0; 
    var input3 = parseInt($('#downPayment').val()) || 0; 
    var input4 = parseInt($('#manufacturerRebate').val()) || 0; 
    var input5 = parseInt($('#tradeInValue').val()) || 0; 
    var input6 = parseInt($('#amtOwedOnTrade').val()) || 0; 
    var input7 = parseInt($('#extendedWarranty').val()) || 0; 
    var input8 = parseInt($('#gapInsurance').val()) || 0; 
    var input9 = parseInt($('#serviceContract').val()) || 0; 
    var sum = input1 + input2 - input3 - input4 - input5 + input6 + input7 + input8 + input9; 
    $('.total').text('$' + sum.toFixed(0).replace(/(\d)(?=(\d{3})+\.)/g, '$1,')); 
    var principle = parseInt($('#vehiclePrice').val()) || 0; 
    var apr = $("input[name='status']:checked").attr("apr"); 
    var months = $("input[name='status']:checked").attr("months"); 
    var perMonth = sum * (apr/12)/(1 - Math.pow((1 + (apr/12)), -months)).toFixed(2); 
    $('.perMonth').text('$' + perMonth.toFixed(0).replace(/(\d)(?=(\d{3})+\.)/g, '$1,')); 
}; 
$('label.option').click(function() { 
    $('.form-item input[type=radio]').attr('checked', null); 
    $('label.option').removeClass("checked").addClass("unchecked"); 
    $(this).prev().attr('checked', "checked"); 
    $(this).addClass("checked").removeClass("unchecked"); 
}); 

$("input[name='status']").click(function() { 
    console.log("changed"); 
    if ($("input[name='status']:checked").val() == '36') { 
     updateTotal("4.95%"); 
     //$(".output2").html("4.36%" + "<span class=\"expandedTermsText\"> APR<\/span>"); 
    } else if ($("input[name='status']:checked").val() == '48') { 
     updateTotal("5.95%"); 
     //$(".output2").html("4.74%" + "<span class=\"expandedTermsText\"> APR<\/span>"); 
    } else if ($("input[name='status']:checked").val() == '60') { 
     updateTotal("6.95%"); 
     //$(".output2").html("4.94%" + "<span class=\"expandedTermsText\"> APR<\/span>"); 
    } else if ($("input[name='status']:checked").val() == '72') { 
     updateTotal("7.95%"); 
     //$(".output2").html("5.30%" + "<span class=\"expandedTermsText\"> APR<\/span>"); 
    } 
}); 
}); 

Любая помощь приветствуется.

Das Fiddle

ответ

1

Initialize currentAPR значение, как это:

var updateTotal, currentAPR = '5.30%'; 

Я поставил 5,30%, так как это значение по умолчанию вы показываете, когда страница приходит вверх. Вероятно, это должно соответствовать значению выбора переключателя по умолчанию «7.95%».

+0

Вы, этот человек ... Спасибо. Не знаю, почему я не видел этого или своих номеров. Я исправлю это сейчас. –