自动表计算

时间:2017-09-16 03:51:03

标签: javascript jquery html css

当需要将数量乘以其他父td值时,我有数量单元格的表格。并且对列值求和。 (即)如果我将数量改为2,那么父行需要乘以2&列获取值添加

我在td完成所有计算部分而没有输入现在我添加了输入并且计算受到影响我调试并检查它我不知道会出现什么问题

这里是我的小提琴:
https://jsfiddle.net/hahkarthick/57zpk59k/3/

<HomeScreen>
    Button:
        text: "Stats"
        on_release: root.switch()

2 个答案:

答案 0 :(得分:1)

希望这会有所帮助......

    <div class="container">
      <h2>Table calculation</h2>
      <p>Calculaton</p>            
      <table class="auto_sum table table-hover" id="sum_table">
        <thead>
            <tr class="title">
            <th>value1</th>
            <th>value2</th>
            <th>value3</th>
            <th>Quantity</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><input type="text" data-val="" value="20[2]" name=""></td>
            <td><input type="number" data-val="" value="10" name=""></td>
            <td><input type="number" data-val="" value="10" name=""></td>
            <td><input class="quantity" type="number" name=""></td>
          </tr>
          <tr>
            <td><input type="number" data-val="" value="5" name=""></td>
            <td><input type="number" data-val="" value="6" name=""></td>
            <td><input type="number" data-val="" value="12" name=""></td>
            <td><input class="quantity" type="number" name=""></td>
          </tr>
          <tr>
            <td><input type="number" data-val="" value="45" name=""></td>
            <td><input type="number" data-val="" value="23" name=""></td>
            <td><input type="number" data-val="" value="22" name=""></td>
            <td><input class="quantity" type="number" name=""></td>
          </tr>
            <tr  class="totalColumn">
              <td class="totalCol">Total:</td>
              <td class="totalCol">Total:</td>
              <td class="totalCol">Total:</td>
              <td></td>
            </tr>
        </tbody>
      </table>
    </div>  
    <script>
    $(document).ready(function(){
      $('.quantity').on('change',function(){
           var val=$(this).val();
           console.log(val)
         // To avoid auto inc while pressing arrow keys
           var preVal =$(this).data('val');

          $(this).data('val',val);
         //To avoid auto inc while pressing arrow keys //
     if(val =='' ||  isNaN(val) || val < 1 || val == undefined){
        val = 1;
     }


    $(this).parent().siblings().each(function(){  
        var oldval = $(this).find('input').val();

        var arr = oldval.split("[");
        console.log(arr);
        //var newval = val * oldval;
        var newval = (val * parseFloat(arr[0])).toFixed(2);

        console.log(newval);
        if(arr.length > 1) {
            newval = newval + "[" + arr[1];
        }

        $(this).find('input').val(newval);
    });
   autoSum();
      });

    autoSum();
    });

    function autoSum(){

        var $dataRows=$("#sum_table tr:not('.total, .title')");
        var totals=[0,0,0];
        $dataRows.each(function() {
            $(this).find('input').each(function(i){        
                totals[i]+=parseFloat( $(this).val());
            });
        });
        $("#sum_table td.totalCol").each(function(i){  
            $(this).html("total:"+totals[i]);
        });

    }

    </script>

答案 1 :(得分:0)

我更新了fiddle

我做了以下更改: -

  1. $('.quantity').on('change, keyup',function(){已更改为$('.quantity').on('keyup',function(){
  2. $(this).siblings().each(function(){已更改为$(this).parent().siblings().each(function(){
  3. var tbvalue=$(this).data("val");已更改为var tbvalue=$(this).find("input[type=number]").val();
  4. 希望它有所帮助。