Php 使用jquery计算动态添加输入字段的总和

Php 使用jquery计算动态添加输入字段的总和,php,jquery,laravel,Php,Jquery,Laravel,我有一个表格,我在计算金额的总和。使用jquery clone()动态生成行 此代码计算的是渲染行的总和,而不是新创建的行 $(document).ready(function(){ $('.datepicker').datepicker(); var $inst = $('.inst_amount'); $inst_form = $('.inst_form'); $total_amount = $('#tot

我有一个表格,我在计算金额的总和。使用jquery clone()动态生成行

此代码计算的是渲染行的总和,而不是新创建的行

 $(document).ready(function(){

        $('.datepicker').datepicker();

        var $inst = $('.inst_amount');
            $inst_form = $('.inst_form');
            $total_amount = $('#total_amount');
            $total_price = $('#total_price');
            total = 0;

        $.each($inst, function(index, val) {
            var val = ($(this).val() == "") ? 0 : $(this).val();
            total = total + parseFloat(val);
        });
         $total_price.html(Math.round(total));
         $total_amount.val(Math.round(total));


        $(document).on('blur','.inst_amount', function(){
            var total = 0;
            $.each($inst, function(index, val) {
                var val = ($(this).val() == "") ? 0 : $(this).val();
                total = total + parseFloat(val);
            });
            console.log(total);
            $total_price.html(Math.round(total));
            $total_amount.val(Math.round(total));
        }); 
});

此代码仅计算加载页面时可用的所有行的总数。在添加新行时,需要调用相同的代码以再次计算总数。基本上,只要单击添加行,您就需要重新计算

  • 移动
    var$inst=$('.inst_amount')到您使用它的位置:
    var总计=0,$inst=$('.inst_amount')-实际上你甚至都不知道。看到我的代码了吗

  • 使用逗号分隔变量

  • 干燥-不要重复你自己

  • 正确给定类并将字段添加到容器中

  • 函数sumIt(){
    var total=0,val;
    $('.inst_amount')。每个(函数(){
    val=$(this.val();
    val=isNaN(val)| |$。trim(val)==“”?0:parseFloat(val);
    总+=val;
    });
    $('#total_price').html(Math.round(total));
    $('total#u amount').val(数学四舍五入(total));
    }
    $(函数(){
    //$('.datepicker').datepicker();//此测试不需要
    $(“#添加”)。在(“单击”,函数(){
    $(“#容器输入”).last()
    .之前($(“”)道具(“类别”、“仪器金额”).val(0))
    。在(“
    ”)之前; sumIt(); }); 美元(文件).on('input','inst_amount',sumIt); sumIt()//加载时运行 });
    
    



    将这些代码放在$(文档)之外。准备好了吗


    因为在$(document).ready时,新行不会被添加

    move
    var$inst=$('.inst_amount')到您使用它的地方:
    var total=0,$inst=$('.inst_amount')$(document).on('blur','.inst_amount', function(){
            var total = 0;
            $.each($inst, function(index, val) {
                var val = ($(this).val() == "") ? 0 : $(this).val();
                total = total + parseFloat(val);
            });
            console.log(total);
            $total_price.html(Math.round(total));
            $total_amount.val(Math.round(total));
        });