自动计算值在文本框中更改,但在dom中没有

时间:2017-10-11 18:23:48

标签: javascript jquery html5 css3 dom

我遇到了一个奇怪的问题:我根据数量单元格中的值的变化进行计算将乘以父单元格 这里是我的小提琴链接: https://jsfiddle.net/hahkarthick/0y0d4vge/16/

到目前为止,计算完美唯一的问题是,当我检查dom时,我没有看到任何值的变化,我认为它仍旧旧值

(即:)2是单元格,0是数量单元格,如果将数量更改为5然后2乘以5并更改为10,但是当我检查Dom时,值仍为2。



$(document).ready(function() {
  $('.quantity').on('change, keyup', 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('.calc').data("val") || $(this).find('.calc').val() || "0";
      var arr = String(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('.calc').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]);
  });

}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <h2>Table calculation</h2>
  <p>Calculaton</p>
  <p>Change quantity column for calculation</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 data-val="20[2]" class="calc" type="text" data-val="" value="20[2]" name="">
        </td>
        <td>
          <input class="calc" data-val="[10]" type="number" data-val="" value="10" name="">
        </td>
        <td>
          <input type="number" data-val="10" value="10" name="">
        </td>
        <td>
          <input class="quantity" type="number" name="">
        </td>
      </tr>
      <tr>
        <td>
          <input class="calc" type="number" data-val="5" value="5" name="">
        </td>
        <td>
          <input class="calc" type="number" data-val="6" 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 class="calc" type="number" data-val="45" value="45" name="">
        </td>
        <td>
          <input class="calc" type="number" data-val="23" 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>
&#13;
&#13;
&#13;

0 个答案:

没有答案