我正在创建一个电子商务,我想根据所选商品的数量设置一个动态价格。我不知道怎么做,有人可以帮助我吗?
这是我的情况:
https://jsfiddle.net/sucwcokv/
<input type="number" min="0" value="0" title="Qta" class="input-text qty text" />
答案 0 :(得分:0)
我希望我理解正确,这就是你的意思:
https://jsfiddle.net/sucwcokv/1/
我添加了一些JQuery:
$(document).ready(function() {
var id = $(".input-text").attr("id");
$('input#' + id).on('change', function() {
$(".amount." + id).html(this.value);
})
})
我不建议将它用于某种重要的电子商务数据。这是一个安全风险。一定要使用服务器端语言(我认为在大多数情况下它是PHP)保护所有使用某种jquery制作的东西,因此用户没有机会操纵任何东西。
答案 1 :(得分:0)
这是我做的小提琴:
https://jsfiddle.net/sucwcokv/4/
它增加了总数,但我会回应@Marcel Wasilewski所说的,仅在javascript中运行这种价格计算并不是一个好主意,因为它对用户操作非常开放。
小提琴的一个问题;它似乎与数字的准确性有关,例如,它有时会增加反复出现的数字。当变量在不同类型之间转换时,我已经在其他语言中看到过这种情况,但我还没有想到这一点。有人可以确认是什么原因导致的任何帮助将不胜感激。
我使用JQuery加快速度,但如果你想要纯粹的JS ......你可能需要考虑转换它:
$(document).ready(function() {
var subtotals = [];
$('.input-text').change(function() {
updateTotal();
});
});
function getRowSubtotal(rowToTotal) {
var currentQty = $(rowToTotal).find('input').val();
var thisPrice = $(rowToTotal).find('ins').find('span.amount').text();
thisPrice = thisPrice.replace('€', '');
thisPrice = thisPrice.replace(',', '.');
return Number(thisPrice) * currentQty;
}
function updateTotal() {
subtotals = [];
$('.input-text').each(function() {
var thisRow = $(this).parent().parent().parent();
subtotals.push(getRowSubtotal(thisRow));
});
var total = 0;
for (var i = 0; i < subtotals.length; i++) {
total += subtotals[i];
}
$('#total').text('Total: ' + total + '€');
console.log(total);
}