我正在尝试在单页商店中生成总价。
我在同一页面上有不同的产品,这是在一个foreach:
<input type="hidden" name="price_<?=$product_id?>" value="<?=$product_price?>" />
<input type="text" name="<?=$product_id?>" value="" onchange="calculateTotal();" />
因此,第一个输入被隐藏并包含产品的价格。第二个输入包含数量,名称设置为product_id。唯一的问题是一页上可能有多个输入。
哪种方法最好?使用Javascript计算价格,或使用Ajax发布并使用PHP进行计算。
答案 0 :(得分:1)
为什么不使用新的data
属性并跳过隐藏价格字段?像这样:
<input class='quantity' type="number" data-price="1.5" name="prod1" value="" />
<div class='subtotal'>0.00</div>
<input class='quantity' type="number" data-price="7" name="prod2" value="" />
<div class='subtotal'>0.00</div>
<div id='total'>0.00</div>
用这个:
$('.quantity').on('change', function(){
var sub = $(this).val() * $(this).data('price');
$(this).next('div.subtotal').html(sub).data('sub',sub);
var tot=0;
$('.subtotal').each(function(){
tot+= $(this).data('sub');
});
$('div#total').html(tot);
});
答案 1 :(得分:0)
注意到使用HTML存储价格变量通常坏礼仪为什么不保持所有价格的总计?像
这样的东西$running_total = $running_total+$product_price;
这将输出已循环的所有产品的总和。如果我误解了你的问题,我很抱歉。
将价格存储为要通过POST或GET传递的HTML实体会使变量处于打开状态,以供最终用户操作。
答案 2 :(得分:0)
随心所欲。只要您在结帐时执行计算(再次?)在服务器上。