我已附加数据,并在隐藏的输入中打印每个数据价格。现在,我想将这些价格与输入数字作为数量求和,以得出总金额,但什么也没打印。



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/

10-12 12:22
查看更多