javascript - 添加新行,jQuery 代码不起作用

标签 javascript jquery

我有一张 table ,有一行和一个按钮。单击按钮时,它会加载另一行。我有一个函数可以进行一些计算。而且,我需要在总计列中显示所有总值的总和。在添加一行之前它工作正常。但添加新行后计算不起作用。

我的代码在这里

<table class="table" id="boq_tbl">
        <thead>

          <th>Work Product Id</th> 
          <th>Cost Code</th>
          <th>Work Item Description</th> 
          <th>Quentity</th>
          <th>Unit</th>
          <th>Laboure-Hrs</th>
          <th>Labour Cost</th> 
          <th>Others</th>
          <th>Total</th>

       <thead>

            <tbody>
    <tr class="txtMult">

        <td><input type="text" name="work_product_id" class="form-control" id="work_product_id" placeholder=""></td>
        <td><input type="text" name="cost_code" class="form-control" id="cost_code" placeholder=""></td>
        <td><input type="text" name="work_item_description" class="form-control" id="work_item_description" placeholder=""></td>
        <td><input type="text" name="quentity" id="val1" class="form-control" /></td>
        <td><input type="text" name="unit" id="val2" class="form-control"/></td>
        <td><input type="text" name="laboure_hrs" id="val3" class="form-control" /></td>
        <td><input type="text"name="laboure_cost" id="val4" class="form-control"/></td>
        <td><input type="text" name="others" class="form-control" id="others" placeholder=""></td>


        <td>
                <span class="multTotal">0.00</span>
        </td>
    </tr>

     </tbody>
       </table> 
<p align="right">
    Grand Total# <span id="grandTotal">0.00</span>
</p>
添加

js

    <script>
$("#insert-more").click(function () {
     $("#boq_tbl").each(function () {
         var tds = '<tr>';
         jQuery.each($('tr:last td', this), function () {
             tds += '<td>' + $(this).html() + '</td>';
         });
         tds += '</tr>';
         if ($('tbody', this).length > 0) {
             $('tbody', this).append(tds);
         } else {
             $(this).append(tds);
         }
     });
});

</script>


<script>

 $(document).ready(function () {
       $(".txtMult input").keyup(multInputs);

       function multInputs() {
           var mult = 0;
           // for each row:
           $("tr.txtMult").each(function () {
               // get the values from this row:
               var $val1 = $('#val1', this).val();
               var $val2 = $('#val2', this).val();
               var $val3 = $('#val3', this).val();
               var $val4 = $('#val4', this).val();
               var $total = ($val1 * $val2 ) + ($val3 * $val4);
               $('.multTotal',this).text($total);
               mult += $total;
           });
           $("#grandTotal").text(mult);
       }
  });




</script>

最佳答案

您的代码经过几次更改后工作正常,看看 Working FIDDLE

  1. 按类替换 id(根据定义,ID 在页面中必须是唯一的),例如:

    <td><input type="text" name="quentity" class="form-control val1" /></td>
    <td><input type="text" name="unit" class="form-control val2"/></td>
    <td><input type="text" name="laboure_hrs" class="form-control val3" /></td>
    <td><input type="text" name="laboure_cost" class="form-control val4"/></td>
    
  2. 也用 javascript 中的类替换它们:

    $("tr.txtMult").each(function () {
           // get the values from this row:
           var $val1 = $('.val1', this).val();
           var $val2 = $('.val2', this).val();
           var $val3 = $('.val3', this).val();
           var $val4 = $('.val4', this).val();
           var $total = ($val1 * $val2 ) + ($val3 * $val4);
           $('.multTotal',this).text($total);
           mult += $total;
    });
    
  3. 要处理动态添加到 DOM 的新tr,您必须替换此行:

    $(".txtMult input").keyup(multInputs);
    

    作者:

    $("#boq_tbl").on("keyup", ".txtMult input", multInputs);
    
  4. txtMult 类添加到点击事件时添加的新 tr 中:

    var tds = '<tr class="txtMult">';
    

关于javascript - 添加新行,jQuery 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024501/

相关文章:

javascript - Blackberry Webworks/Phonegap 文件浏览器

javascript - 为数组创建像 ngModel 这样的 AngularJS 指令

javascript - jQuery:如何在一系列动画之后排队完成一个函数?

javascript - 仅从特定链接在其他页面中执行 jQuery 函数

javascript - 使用jquery在循环中分页上一个和下一个

javascript - 如何更改 package.json 以获得最新版本的 axios?

javascript - 如何为 jQuery 事件附加一些数据以进行冒泡?

javascript - CSS 图像在表格中的绝对位置放置

javascript - 使用 javascript/jquery 将 Html 表导出到 Excel

javascript - 数据表 - 响应不起作用?