jQuery函数即使在$(document).on()上也仅适用于第一行

时间:2019-11-16 05:43:20

标签: javascript php jquery html invoice

我遵循了使用PHP jquery mysql和bootstrap的发票系统教程。我一个接一个地跟随代码,但是某些类的$(document).on()函数不起作用。但是,在教程视频中,它似乎正在工作。 主要问题是$(document).on()函数调用仅适用于表的第一行,不适用于其余行。

谢谢您的帮助...

HTML部分:

<td><input type="text" name="order_item_quantity[]" id="order_item_quantity'+count+'" data-srno="'+count+'" class="form-control input-sm number_only order_item_quantity"></td>

<td><input type="text" name="order_item_price[]" id="order_item_price'+id+'" data-srno="'+id+'" class="form-control input-sm number_only order_item_price"></td>

<td><input type="text" name="order_item_actual_amount[]" id="order_item_actual_amount'+count+'" data-srno="'+count+'" class="form-control input-sm order_item_actual_amount" readonly /></td>

jQuery函数:

             var final_total_amt = $('#final_total_amt').text();
             var total = $('#total_item').val();
             var count = 1;
                    function cal_final_total(count){
                        var final_item_total = 0;
                        for(var j=1; j<=total; j++){
                            var qty = 0;
                            var price = 0;
                            var actual_amount = 0;

                            qty = $('#order_item_quantity'+j).val();

                            if (qty > 0) {
                            price = $('#order_item_price'+j).val();
                               if (price > 0) {
                                   actual_amount = parseFloat(qty)*parseFloat(price);
                                   $('#order_item_actual_amount'+j).val(actual_amount);
                               }
                            }

$(document).on()函数调用

                    $(document).on('blur', '.order_item_price', function(){
                        cal_final_total(count);
                    });

很抱歉,如果您以前曾问过这个问题,但是我确实在这里检查了类似的问题,并尝试了建议的解决方案,但是似乎都没有用。谢谢您的提前答复。

1 个答案:

答案 0 :(得分:0)

您只需替换此代码即可解决

function cal_final_total() {
    var final_item_total = 0;
    $('.order_item_quantity').each(function(){
        parent = $(this).closest('tr');
        qty = +parent.find('.order_item_quantity').val();
        price = +parent.find('.order_item_price').val();
        actualAmount = qty*price;
        final_item_total += final_item_total;
        parent.find('.order_item_actual_amount').val(actualAmount);
    });
}

确保您的输入字段位于单独的 tr 标记