Автоматический расчет входного массива в Jquery - PullRequest
0 голосов
/ 06 марта 2019

В моей форме все столбцы работают хорошо, кроме столбца итоговой суммы.

У меня есть 3 постоянных строки, чтобы позволить пользователю выбрать элемент, и я автоматически вычислю Итоговую цену.

Общая сумма - это сумма totalamtincltax , но она не может рассчитать автоматически. Надеюсь, вы, ребята, можете помочь. Спасибо.

Вид: Это часть моего взгляда

<!-- **************************** START OF ITEM LIST 3 ************************   -->
                     <tr class="item-details">
                        <td><span class="rowNumber">3</span></td>
                         <td class="">
                        <?php
                        $options = array(
                                         '' => '~Choose An Item~'
                                         );
                        foreach ($item as $rows){
                            $options[$rows->id] = $rows->item_name;
                        }

                        $select = array(

                                        'id' => 'item_id',
                                        'class' => 'form-control'
                                        );
                        echo form_dropdown('item_id[]', $options,set_value('item_name'),$select);
                        ?>
                        </td>
                        <td class=""><input type="number" id="qty[]" class="item-qty" name="qty[]" min="0.00"/></td>
                        <td><input type="number" name="weight[]" class="weight" step="any" /></td>
            <td><input type="number" name="transportation[]" class="transporation" step="any"/></td>
            <td><input type="text" id="gp[]"  name="gp[]" value="" /></td>
                        <td><input type="text" id="discount[]"  name="discount[]" value="" /></td>
                        <td><input type="text" id="unit_price[]"  name="unit_price[]" value="" /></td>
                        <td align="right">
            <input type="text" id="totalwithouttax[]" name="totalwithouttax[]" value="" readonly>
            </td>
            <td align="right">
            <input type="text" id="totaltax[]" name="totaltax[]" value="" readonly>
            </td>
            <td align="right">
            <input type="text" id="totalamtincltax[]" name="totalamtincltax[]" value="" readonly>
            </td>
                     </tr><br/><br><br><br>
         <tr align="right" class="item-details">
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td align="right"><strong>Grand Total</strong></td>
            <td><input type="text" id="grandtotal" name="grandtotal" value="" readonly></td>
         </tr>

Jquery: (Обновлено!)

$(document).ready(function(){
  $('input[name^="qty"],input[name^="transportation"],input[name^="gp"],input[name^="discount"],input[name^="unit_price"],input[name^="totalwithouttax"],input[name^="totaltax"],input[name^="totalamtincltax"],input[name=grandtotal]').change(function()  {
      //alert("The text has been changed.");
                        var totalwithouttax = 0;
                        var totaltax = 0;
                        var totalamtincltax = 0;
                        var grandtotal = 0;
      var $row = $(this).closest(".item-details"); //<table> class
      var qty = parseInt($row.find('input[name="qty[]"]').val());
      var transportation = parseFloat($row.find('input[name="transportation[]"]').val());
      var gp = parseFloat($row.find('input[name="gp[]"]').val());
      var discount = parseFloat($row.find('input[name="discount[]"]').val());
      var unitPrice = parseFloat($row.find('input[name="unit_price[]"]').val());

      totalwithouttax = ((transportation + gp + unitPrice - discount) * qty) || 0;
      $row.find('input[name="totalwithouttax[]"]').val(totalwithouttax);
                        totaltax = 0;
                        $row.find('input[name="totaltax[]"]').val(totaltax);
                        totalamtincltax = totalwithouttax + totaltax;
                        $row.find('input[name="totalamtincltax[]"]').val(totalamtincltax);
                        grandtotal = totalamtincltax || 0;
                        $row.find('input[name="grandtotal"]').val(grandtotal);          
    });
  });

Ответы [ 2 ]

0 голосов
/ 06 марта 2019
$(document).ready(function() {
    $('input[name^="qty"],input[name^="transportation"],input[name^="gp"],
        input[name ^= "discount"], input[name ^= "unit_price"], input[name ^= "totalwithouttax"],
        input[name ^= "totaltax"], input[name ^= "totalamtincltax"],
        input[name ^= "grandtotal"]
        ').change(function()  {
        //alert("The text has been changed.");
        var totalwithouttax = 0;
        var totalamtincltax = 0;
        var $row = $(this).closest(".item-details"); //<table> class
        var qty = parseInt($row.find('input[name="qty[]"]').val());
        var transportation = parseFloat($row.find('input[name="transportation[]"]').val());
        var gp = parseFloat($row.find('input[name="gp[]"]').val());
        var discount = parseFloat($row.find('input[name="discount[]"]').val());
        var unitPrice = parseFloat($row.find('input[name="unit_price[]"]').val());

        totalwithouttax = ((transportation + gp + unitPrice - discount) * qty) || 0; $row.find('input[name="totalwithouttax[]"]').val(totalwithouttax);
        var totaltax = 0.00; $row.find('input[name="totaltax[]"]').val(totaltax); totalamtincltax = totalwithouttax + totaltax; $row.find('input[name="totalamtincltax[]"]').val(totalamtincltax);
        var grandtotal = totalamtincltax || 0; $row.find('input[name="grandtotal[]"]').val(grandtotal);
    });
});

определить переменную totalamtincltax = 0; и var totaltax = 0,00; var grandtotal = 0;

0 голосов
/ 06 марта 2019

Несоответствие имени вашей формы и вашего find

Попробуйте:

$row.find('input[name="grandtotal"]').val(grandtotal);  

Это должно решить проблему, и, пожалуйста, объявите ваши переменные правильно, grandtotal неопределено в вашем коде Jquery.(нет var)

PS (не имеет отношения к вопросу / ответу), но почему у вас есть [] в именах / идентификаторе формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...