我有一些产品数据行。我可以通过jQuery动态添加更多行, 我计算了最后每一行的总数。现在我想计算所有行的总计。我累了,但它总是显示最后一行总计。 请看图片。
这是我的jquery部分。
//calculation here
$('#dsp').on('input','.ctn',function(){
var cal=$(this).val();
var gparent=$(this).closest('.row');
var unitp=gparent.find('.u_price').val();
var unitpctn=gparent.find('.unit_pctn').val();
var pcs=gparent.find('.pcs').val();
//alert(pcs);
var total=(((parseInt(unitpctn)*parseInt(cal)) + parseInt(pcs))*parseInt(unitp));
gparent.find('.t_amt').val(total);
//grand total
var gtotal=0;
var gtotal=parseInt(gtotal)+parseInt(total)
//alert(gtotal);
$('#tot').html(gtotal);
});
$('#dsp').on('input','.pcs',function(){
var pcs=$(this).val();
var gparent=$(this).closest('.row');
var unitp=gparent.find('.u_price').val();
var unitpctn=gparent.find('.unit_pctn').val();
var ctn=gparent.find('.ctn').val();
//alert(pcs);
var total=(((parseInt(unitpctn)*parseInt(ctn)) + parseInt(pcs))*parseInt(unitp));
gparent.find('.t_amt').val(total);
//grand total
var gtotal=0;
var gtotal=parseInt(gtotal)+parseInt(total)
//alert(gtotal);
$('#tot').html(gtotal);
});
这是我的观点部分。
<div id="dsp">
<div class="row">
<div class="col-md-2">
<select name="p_name[]" class="form-control p_name">
<option value="">-Select Product-</option>
@foreach($products as $product)
<option value="{{$product->product_id}}">{{$product->name}}</option>
@endforeach
</select>
</div>
<div class="col-md-2">
<input type="text" name="p_code[]" class="form-control p_code">
</div>
<div class="col-md-2">
<input type="text" name="unit_pctn[]" class="form-control unit_pctn" value="0">
</div>
<div class="col-md-2">
<input type="text" name="u_price[]" class="form-control u_price" value="0">
</div>
<div class="col-md-1">
<input type="text" name="ctn[]" class="form-control ctn" value="0">
</div>
<div class="col-md-1">
<input type="text" name="pcs[]" class="form-control pcs" value="0">
</div>
<div class="col-md-2">
<input type="text" name="t_amt[]" class="form-control t_amt" value="0">
</div>
</div>
</div>
<div class="row" id="nep"></div>
<div class="row">
<div class="col-md-10"></div>
<div class="col-md-2">GrandTotal:<h5 id="tot">0</h5></div>
</div>
答案 0 :(得分:2)
这是一个帮助您计算总计的小功能:
change
您需要在个人总数的/etc/apt/sources.list.d/php.list
上调用以上函数或更新个别总计。只需调用该功能即可返回总计。
答案 1 :(得分:0)
此代码是您的问题的代码工作。
gparent.find(".t_amt").each(function() {
var gtotal=parseInt(gtotal)+parseInt(total)
}
完整代码:
//calculation here
$('#dsp').on('input','.ctn',function(){
var cal=$(this).val();
var gparent=$(this).closest('.row');
var unitp=gparent.find('.u_price').val();
var unitpctn=gparent.find('.unit_pctn').val();
var pcs=gparent.find('.pcs').val();
//alert(pcs);
var total=(((parseInt(unitpctn)*parseInt(cal)) + parseInt(pcs))*parseInt(unitp));
gparent.find('.t_amt').val(total);
//grand total
var gtotal=0;
var gtotal=parseInt(gtotal)+parseInt(total)
//alert(gtotal);
$('#tot').html(gtotal);
});
$('#dsp').on('input','.pcs',function(){
var pcs=$(this).val();
var gparent=$(this).closest('.row');
var unitp=gparent.find('.u_price').val();
var unitpctn=gparent.find('.unit_pctn').val();
var ctn=gparent.find('.ctn').val();
//alert(pcs);
var total=(((parseInt(unitpctn)*parseInt(ctn)) + parseInt(pcs))*parseInt(unitp));
gparent.find('.t_amt').val(total);
//grand total
var gtotal=0;
gparent.find(".t_amt").each(function() {
var gtotal=parseInt(gtotal)+parseInt(total);
}
//alert(gtotal);
$('#tot').html(gtotal);
});
答案 2 :(得分:0)
数据绑定和计算都在这里完成,
$(document).ready(function(){
$('#dsp').on('change','.p_name',function(){
var pid=$(this).val();
var parent= $(this).closest('.row');
//alert(pid);
$.ajax({
url:"{{route('getinfo')}}",
method:'post',
data:{id:pid,'_token':"{{csrf_token()}}"},
success:function(response) {
//alert(response.code);
parent.find('.p_code').val(response.code);
parent.find('.unit_pctn').val(response.pcs_per_ctn);
}
});
$.ajax({
url:"{{route('getprice')}}",
method:'post',
data:{id:pid,'_token':"{{csrf_token()}}"},
success:function(response) {
//alert(response.code);
parent.find('.u_price').val(response.client_price);
}
});
});
//calculation here
$('#dsp').on('input','.ctn',function(){
var cal=$(this).val();
var gparent=$(this).closest('.row');
var unitp=gparent.find('.u_price').val();
var unitpctn=gparent.find('.unit_pctn').val();
var pcs=gparent.find('.pcs').val();
//alert(pcs);
var total=(((parseInt(unitpctn)*parseInt(cal)) + parseInt(pcs))*parseInt(unitp));
gparent.find('.t_amt').val(total);
//grand total
var gtotal=0;
var gtotal=parseInt(gtotal)+parseInt(total)
//alert(gtotal);
$('#tot').val(gtotal);
});
$('#dsp').on('input','.pcs',function(){
var pcs=$(this).val();
var gparent=$(this).closest('.row');
var unitp=gparent.find('.u_price').val();
var unitpctn=gparent.find('.unit_pctn').val();
var ctn=gparent.find('.ctn').val();
//alert(pcs);
var total=(((parseInt(unitpctn)*parseInt(ctn)) + parseInt(pcs))*parseInt(unitp));
gparent.find('.t_amt').val(total);
//grand total
var gtotal=0;
$('.t_amt').each(function(){ gtotal += parseFloat($(this).val()) || 0; $('#tot').val(gtotal); });
});
});