Входной массив автоматического расчета в Jquery

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

У меня есть 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);          
    });
  });

вы задали этот вопрос вчера

Krishna Jonnalagadda 06.03.2019 12:36

@KrishnaJonnalagadda да, но у меня все еще есть проблема с общей суммой

jovan2226 06.03.2019 12:39

В вашем коде много проблем, но я вижу 2 проблемы, которые вызывают вашу проблему: 1: grandtotal не определен в коде jquery 2: имя в вашем html grandtotal, но вы пытаетесь найти grandtotal[]

I am L 06.03.2019 12:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
210
2

Ответы 2

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

Пытаться:

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

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

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

Я просто случайно поставил [] получил общую сумму, слишком небрежно.. хахаха

jovan2226 06.03.2019 12:53

отображает ли общая сумма 0 или она пуста или что-то отображает?

I am L 06.03.2019 13:00

отображение общей суммы пусто

jovan2226 07.03.2019 01:34

Вы пытались зарегистрировать $row.find('input[name = "grandtotal"]'), чтобы увидеть, является ли он неопределенным или, может быть, массивом?

I am L 07.03.2019 09:09
$(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);
    });
});

define var totalamtincltax = 0; and var totaltax = 0.00; var grandtotal = 0;

Другие вопросы по теме