我已附加数据,并在隐藏的输入中打印每个数据价格。现在,我想将这些价格与输入数字作为数量求和,以得出总金额,但什么也没打印。
码javascript
success:function(data) {
//append data to my view
data.forEach(function(row) {
var $meto = '';
$meto += '<div class="col-md-3 mt-2">'+
'<div class="card">'+
'<div class="card-body">'+
'<img src="{{url("images")}}/'+row['photo']+'" class="menuimg img-fluid" alt="image">'+
'<p>'+row['name']+'</p>'+
'<input type="number" name="qty[]" class="qty form-control">'+
'<input type="hidden" class="price" value="'+row['price']+'" />'+
'</div>'+
'</div>'+
'</div>';
$('.here').append($meto);
//sum prices
$('.qty').on('keyup',function(){
var qty = $('.qty').val();
var price = $('.price').val();
$("#total").html(qty*price);
});
});
}
html
<div class="col-md-10">
<div class="row here"></div>
</div>
<p>Total: <span id="total"></span></p>
说明
我已经用数量
1 & 3
填充了我的2个项目,每个项目下都有隐藏的输入保持价格(因为此示例中它们是5000 & 16000
)基本上,我应该在总div中添加以下内容:
1*5000 = 5000
3*16000 = 48000
Total = 53000
但是,它只会得到我的第一个输入,而忽略其余的输入。有任何想法吗?
最佳答案
您未添加所有项目的价格。您需要遍历所有项目并计算总计。
注意:在您的forEach语句之后保留此内容。
尝试这个:
$('.qty').on('keyup',function() {
var quantities = $('.qty');
var prices = $('.price');
var total = 0;
$.each(quantities, (index, qty) => {
total += parseInt($(qty).val() || 0) * parseFloat($(prices[index]).val() || 0)
});
$("#total").html(total);
});
关于javascript - 如何在javascript中求和输入数字和数据库值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54644765/