В моей форме все столбцы работают хорошо, кроме колонка общего итога.
У меня есть 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);
});
});
@KrishnaJonnalagadda да, но у меня все еще есть проблема с общей суммой
В вашем коде много проблем, но я вижу 2 проблемы, которые вызывают вашу проблему: 1: grandtotal не определен в коде jquery 2: имя в вашем html grandtotal, но вы пытаетесь найти grandtotal[]



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Несоответствие имени вашей формы и вашего find
Пытаться:
$row.find('input[name = "grandtotal"]').val(grandtotal);
Это должно решить проблему, и, пожалуйста, правильно объявите свои переменные, grandtotal не определен в вашем коде Jquery. (нет var)
P.S. (не относится к вопросу/ответу), но почему у вас есть [] в именах/идентификаторах формы.
Я просто случайно поставил [] получил общую сумму, слишком небрежно.. хахаха
отображает ли общая сумма 0 или она пуста или что-то отображает?
отображение общей суммы пусто
Вы пытались зарегистрировать $row.find('input[name = "grandtotal"]'), чтобы увидеть, является ли он неопределенным или, может быть, массивом?
$(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;
вы задали этот вопрос вчера