簡體   English   中英

添加多個動態行后,無法添加動態行的值

[英]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));
}

您的代碼中有一些問題:

  • 您在處理動態項目時重新使用ID,而是使用class
  • 表格頁腳位於表格主體之外
  • 我總是避免在動態表中克隆元素,可以改為創建模板
  • 事件綁定

看我的例子:

 $(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM