2017-09-16 34 views
0

我想總結我的選中複選框和輸入值與他們在一起。目前我分別獲得兩個(和它的功能如何我希望它)是這樣的:jquery求和輸入和選中的複選框

$(document).ready(function() { 
    $('.box').change(function(){ 
    var totalbox = 0; 
    $('.box:checked').each(function(){ 
     totalbox+= +($(this).attr("rel")); 
    }); 
    $('#totalbox').val(totalbox.toFixed(2)); 
    }); 
}); 


$(document).on("recalc", ".vendor_accounts", function() { 
    var totalinput = 0; 
    $(this).find(".payment").each(function() { 
    totalinput += +$(this).val(); 
    }); 
    $("#totalinput").val(totalinput.toFixed(2)); 
}); 

$(".vendor_accounts").trigger("recalc"); 

上述功能分別產生正確的結果。我只需要結合這些結果的值並將它們顯示爲一個ID內的一個var。

每下面的答案,這是沒有的伎倆:

function updateGrandTotalDisplayed(val){ 
    var input1 = parseFloat($('#checkTotal').val()); 
    var input2 = parseFloat($('#inputTotal').val()); 
    var total = input1 + input2; 
    $('#totalPrice').val(total.toFixed(2)); 
}; 

回答

1

一個解決辦法是放置一個total變量的作用域這是提供給兩個是計算總的功能。例如,所有的代碼之前,你可以這樣寫:

var grandTotal = 0; 

然後你就可以計算,分類彙總時每個小計添加到grandTotal變量。如果您在頁面上的某個位置顯示總數,您也可以在該點調用一個函數來更新顯示的總數。因此,例如,在第一部分,你可以這樣修改它:

$(document).ready(function() { 
    $('.box').change(function(){ 
    var total = 0; 
    $('.box:checked').each(function(){ 
     total+= +($(this).attr("rel")); 
    }); 
    $('#total').val(total.toFixed(2)); 
    grandTotal += total; 
    updateGrandTotalDisplayed(); 
    }); 
}); 

(該updateGrandTotalDisplayed()是你寫其他地方的函數,調用這裏更新什麼是顯示在頁面上。)希望這有助於。


編輯補充:如果你只是希望值相加,而無需使用第三個變量,您可以使用val()函數來檢索值,然後把它們相加。例如,$('#totalinput').val()會爲您提供#totalinput元素中的當前值。

但是,您應該注意,您不能依賴以特定順序計算的兩個小計。你不知道哪個計算會先發生或完成。

+0

謝謝,我編輯了我的代碼,以便更清楚地瞭解我的情況。老實說,我不是在我可以寫我自己的jQuery功能的地步......我只是很高興我能夠解譯這個網站上的信息,使其與我的應用程序一起工作。再次,js是我正在處理的東西,我很興奮,我現在能夠以某種方式操縱我的後端數據。有沒有辦法只是總結#totalbox和#totalinput在一起? – dfeva

+0

@dfeva我編輯了我的答案,爲你添加一些信息。 JS和其他代碼(比如PHP)之間最難區別的是,事情是異步發生的,你必須考慮到這一點。 – cheryllium

+0

感謝您的輸入。我將如何去編寫每次運行_totalinput_或_totalbox_的'''updateGrandTotalDisplayed()'''函數? ..bryry,我使用的唯一js函數大多是對id和class進行一些調整的複製和粘貼。 – dfeva