2017-10-06 59 views
1

我正在構建一個表單來計算一些服務的總和。用戶必須輸入淨額和增量(%),然後程序應計算總量和總增量。每當其中一個輸入字段被更改時,它應該自動更新總數和總數。用戶也可以插入多行(相同的類,唯一標識符),這些也必須總結一下!這是我到目前爲止所做的FIDDLEjquery - 從dynamicaly創建的元素獲得總和

下面的代碼我設法只計算第一行,如果我插入.each()所以它會計算代碼中的每個元素,然後它不起作用!並沒有錯誤!不應該每個都返回其元素中指定的所有值?

$('#sig_3').on('change','.vat_calc',function(){ 
    var id = $(this).attr('id'); 
    var id_suffix_new = id.split('_').pop(); 
    var amount_val = parseFloat($('#amount_'+id_suffix_new).val()); 
    var vat_val = parseFloat($('#vat_'+id_suffix_new).val()); 
    var vat_amount = amount_val * vat_val; 
    $('#vat_amount_'+id_suffix_new).val(parseFloat(vat_amount)); 
    total = amount_val+vat_amount; 
    $('#total').val(parseFloat(total)); 
}); 
+2

必須是**唯一**,問題應該包括驗證問題所需的所有代碼 - > [如何創建最小,完整和可驗證的示例](https://stackoverflow.com/幫助/ mcve) – Andreas

+0

ID ** ** **是獨一無二的,因爲我已經在上面寫過。完整的代碼是** IN **小提琴。 @Andreas – noel293

+0

這個問題可能會給你一些想法https://stackoverflow.com/questions/44894550/calculating-values-in-dynamically-created-dom/44894979#44894979 – taha

回答

1

已更新了小提琴,這裏是鏈接 - https://jsfiddle.net/bn4na8qc/3/

$('ul').each(function() { 
 
    var amount_val = parseFloat($(this).find('.amount').val()); 
 
    var vat_val = parseFloat($(this).find('.vat_calc').val()); 
 
    var vat_amount = amount_val * vat_val; 
 
     $(this).find('.vat_amount').val(parseFloat(vat_amount)); 
 
     total_vat += parseFloat(vat_amount); 
 
     total += amount_val + vat_amount; 
 
    });

0

您可以添加的動態輸入值是這樣的:

$("#add").click(function(){ 
 
    $("#content").append("<input type='text' value=0 class='data' />"); 
 
}) 
 

 
$(document).on('change',".data",function(){ 
 
    var total = 0; 
 
    $(".data").each(function(){ 
 
     total += parseFloat($(this).val()); 
 
    }) 
 
    $("#total").html(total); 
 
});
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
    <script src="https://code.jquery.com/jquery-2.1.4.js"></script> 
 

 
</head> 
 
<body> 
 
    <div id="content"> 
 
    
 
    </div> 
 
    <div id="total" style="width=100px;height:20px;background-color:#cbcbcb"> 
 
     
 
    </div> 
 
    <button id="add" style="width:100px;height:20px">Add Input</button> 
 
</body> 
 
</html>

+0

不,我需要一個函數,每次vat_calc改變它將把所有東西加起來!只是我不能改變整個代碼 – noel293