总值不会改变而小计改变

时间:2013-05-31 16:48:55

标签: javascript

我有一个子总数的js代码和当我改变其文本字段的值时这个子总变化,但是因为TotalSavings和TotalVariable的这个字段改变了它应该改变我的TotalExpenses的值,但是它没有这样做。我的TotalSavings,TotalVariable和TotalExpenses的文本字段是只读的,如何根据我的子总计中的每个值更改TotalExpenses:TotalSavings和TotalVariable

这是我的子总数的js代码,

$(function() {
    $("#Insurance, #COL, #Saveup, #SSS").keyup(function() {
        var i = parseInt($("#Insurance").val(), 10);
        var c = parseInt($("#COL").val(), 10);
        var s = parseInt($("#Saveup").val(), 10);
        var e = parseInt($("#SSS").val(), 10);
        $("#TotalSavings").val(i + c + s + e);
    });
});


$(function() {
    $("#Fares, #Recreation, #OtherExpenses").keyup(function() {
        var f = parseFloat($("#Fares").val(), 10);
        var r = parseFloat($("#Recreation").val(), 10);
    var o = parseFloat($("#OtherExpenses").val(), 10);
        $("#TotalVariable").val(f + r + o);
    });
});

这是我的总js代码,

$(function() {
    $("#TotalSavings, #TotalVariable").keyup(function() {
        var t1 = parseFloat($("#TotalSavings").val(), 10);
        var t2 = parseFloat($("#TotalVariable").val(), 10);
        $("#TotalExpenses").val(t1 + t2);
    });
});

1 个答案:

答案 0 :(得分:2)

不要使用keyUp处理程序进行总值计数,请使用此功能。 在您的情况下keyUp永远不会调用TotalSavingsTotalVariable的回调函数,因为更改是通过脚本而不是用户输入以编程方式进行的。

$(function() {
    $("#Insurance, #COL, #Saveup, #SSS").keyup(function() {
        var i = parseInt($("#Insurance").val(), 10);
        var c = parseInt($("#COL").val(), 10);
        var s = parseInt($("#Saveup").val(), 10);
        var e = parseInt($("#SSS").val(), 10);
        $("#TotalSavings").val(i + c + s + e);
        updateTotalExpenses();
    });

    $("#Fares, #Recreation, #OtherExpenses").keyup(function() {
        var f = parseFloat($("#Fares").val(), 10);
        var r = parseFloat($("#Recreation").val(), 10);
    var o = parseFloat($("#OtherExpenses").val(), 10);
        $("#TotalVariable").val(f + r + o);
        updateTotalExpenses();
    });
});


function updateTotalExpenses() {
    var t1 = parseFloat($("#TotalSavings").val(), 10);
    var t2 = parseFloat($("#TotalVariable").val(), 10);
    $("#TotalExpenses").val(t1 + t2);
});