Я создаю сайт электронной коммерции для своего последнего проекта года. Пока я создаю проект, с которым я столкнулся, проблема с продуктом должна быть в состоянии добавить карту, но когда я просматриваю показанный продукт карты, который я добавил в карту. моя проблема если дать количество, он будет автоматически вычислять и отображать результат в общем текстовом поле. Я приложил изображение ниже того, что я пробовал до сих пор. Но не смог подсчитать общий и итоговый итог.
Показать продукты
<script>
getProducts();
function getProducts() {
$.ajax({
type: 'GET',
url: 'all_cart.php',
dataType: 'JSON',
success: function(data) {
data.forEach(function(element) {
var id = element.id;
var product_name = element.product_name;
var price = element.price;
$('#mytable tbody').after
(
'<tr> ' +
'<td>' + id + '</td>' +
'<td>' + product_name + '</td>' +
'<td>' + price + '</td>' +
"<input type='hidden' name='price' value='" + price + "'>" +
'<td>' + "<input type = 'text' id='qty' name='qty'/>" + '</td>' +
'<td>' + "<input type = 'text' id='amount'/>" + '</td>' +
'</tr>');
});
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});
}
Автоматический расчет цены * кол-во
$(function() {
$("#price, #qty").on("keydown keyup click", qty);
function qty() {
var sum = (
Number($("#price").val()) * Number($("#qty").val())
);
$('#amount').val(sum);
console.info(sum);
}
});
вы можете написать код, который легко понять
Когда вы получаете $("#цена").val() и $("#кол-во").val() в jQuery, но у вас много дубликатов $("#price") и $("#qty"). Вы должны запустить это в консоли. Я надеюсь, что это полезно для вас
Вы не должны добавлять несколько элементов с одинаковым идентификатором на страницу
Ты можешь попробовать
function getProducts() {
$.ajax({
...
$('#mytable tbody').after
(
'<tr> ' +
'<td>' + id + '</td>' +
'<td>' + product_name + '</td>' +
'<td>' + price + '</td>' +
"<input type='hidden' name='price' class='price' value='" + price + "'>" +
'<td>' + "<input type = 'text' class='qty' name='qty'/>" + '</td>' +
'<td>' + "<input type = 'text' class='amount'/>" + '</td>' +
'</tr>');
});
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});
}
$(function() {
$(".price, .qty").on("keydown keyup click", function () {
var price = $(this).parents('tr').find('.price');
var qty= $(this).parents('tr').find('.qty');
var sum = (
Number($(price).val()) * Number($(qty).val())
);
$(this).parents('tr').find('.amount').val(sum);
calculateAmount();
});
function calculateAmount() {
var total = 0;
$('.amount').each(function(e){
total += Number($(this).val());
});
$('#total-amount').text(total);
}
});
Это демо: https://codepen.io/phuongnm153/pen/bymYOQ
я просто копирую и вставляю код в свой проект, он не работает, сэр. если я ввожу общее количество не отображается
Uncaught ReferenceError: tr не определен, я получил сообщение об ошибке на консоли, сэр.
Извините за ошибку в $(this).parents('tr')
NaN отображается на консоли, а значения не отображаются в общем текстовом поле.
работает, сэр, спасибо за вашу помощь, тогда как рассчитать окончательную сумму, пожалуйста, скажите мне
работает хорошо, сэр, окончательная сумма, которую вы хотите отобразить ниже таблицы, можете ли вы мне помочь, сэр?
@NisaYathu Я добавил больше function calculateAmount()
в соответствии с вашими ожиданиями. Вы можете увидеть мою демонстрацию
1. несколько одинаковых
id
не будут работать, когда вы собираетесь использовать их в jquery, поэтому преобразуйте каждыйid
вclass
. 2. вы должны использовать$(this)
для адресации текущего измененного поля ввода