[英]Adding values of dynamic rows not working after multiple dynamic rows are added
我創建了一個動態表,用戶必須在其中輸入學生姓名及其科目和成績。 每個學生可以包含幾個科目。 我已經附上了下面的代碼,這將更容易理解。
什么工作:
這筆總和對於添加的1個學生來說效果很好。
我需要的
總和應該為我動態添加的每個學生塊相加,並將總計顯示為小計。 小計應加起來得出總數。
碼
function calculateSum() {
var sum = 0;
$(".marks").each(function () {
if (!isNaN(this.value) && this.value.length != 0) {
sum += parseFloat(this.value);
}
});
$("#Sub").val(sum.toFixed(2));
$("#Sub1").val(sum.toFixed(2));
}
function recalc() {
var tt = 0;
$("#tb").find('tr').each(function () {
$(this).find('input.row-total').val(dateTotal ? dateTotal : "");
tt += isNumber(dateTotal) ? dateTotal : 0;
}); //END .each
$("#table-grand-total").html(tt);
}
function calculateTotal() {
var sum = 0;
//iterate through each textboxes and add the values
$(".row-total").each(function () {
//add only if the value is number
if (!isNaN(this.value) && this.value.length !== 0) {
sum += parseFloat(this.value);
}
});
//.toFixed() method will roundoff the final sum to 2 decimal places
$(".table-total").val(sum.toFixed(2));
}
您的代碼中有一些問題:
看我的例子:
$(function() { var students = 0; function studentTemplate(students) { return '<tr class="student_name"> <td colspan="2"><b>Student Name</b></td><td colspan="1"> <input type="text" name="student_names[]" class="form-control" placeholder="Student Name"> </td><th><a style="font-size:18px;width:33%;" class="newstudent" title="Add More Person"><span class="glyphicon glyphicon-plus"></span></a></th> </tr><tr class="student_marks"> <td><b>Subject Name and Marks</b></td><td> <input type="text" name="subnames[]" class="form-control" placeholder="Subject Name"> </td><td> <input type="number" name="marks[]" class="marks student_' + students + ' form-control" student_ref="student_' + students + '" placeholder="Marks"> </td><th><a style="font-size:18px;width:33%;" class="addsubject" ><span class="glyphicon glyphicon-plus"></span></a></th> </tr><tr class="subtotal"> <td colspan="2"><b>Sub - Total</b></td><td> <input type="text" name="subtotals[]" class="row-total student_' + students + ' form-control" disabled> </td></tr>'; } function subTemplate(students) { return '<tr class="student_marks"> <td><b>Subject Name and Marks</b></td><td> <input type="text" name="subnames[]" class="form-control" placeholder="Subject Name"> </td><td> <input type="number" name="marks[]" class="marks student_' + students + ' form-control" student_ref="student_' + students + '" placeholder="Marks"> </td><th><a style="font-size:18px;width:33%;" class="addsubject" ><span class="glyphicon glyphicon-plus"></span></a></th> </tr>'; } $('#tb tbody').append(studentTemplate(students)); $('#tb tbody').on("click", "a.newstudent", function() { students++; $('#tb tbody').append(studentTemplate(students)); }); $('#tb tbody').on("click", "a.addsubject", function() { $(this).closest(".student_marks").after(subTemplate(students)); }); $('#tb tbody').on("keyup", "input.marks", function() { subtotal($(this).attr("student_ref")); }); function subtotal(ref) { var sub = 0; $(".marks." + ref).each(function() { sub += $(this).val() != "" ? parseInt($(this).val()) : 0; }); $(".row-total." + ref).val(sub); calcTotal(); } function calcTotal() { var total = 0 $(".row-total").each(function() { total += $(this).val() != "" ? parseInt($(this).val()) : 0; }) $('#table-grand-total').val(total); } });
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="panel panel-primary"> <div class="bs-example"> <div class="Container"> <table class="table table-hover small-text" style="margin-top: 50px;" id="tb" border="1px"> <tbody> </tbody> <tfoot> <th colspan="2">GRAND TOTAL</th> <td> <input type="text" name="GrandTotal[]" id="table-grand-total" class="table-total form-control" disabled> </td> </tfoot> </table> </div> </div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.