Php 使用jquery计算动态添加输入字段的总和
我有一个表格,我在计算金额的总和。使用jquery clone()动态生成行 此代码计算的是渲染行的总和,而不是新创建的行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
$(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时,新行不会被添加movevar$inst=$('.inst_amount')代码>到您使用它的地方:var total=0,$inst=$('.inst_amount')这里有问题吗?你错了。每次触发模糊时,他都需要获得$inst。看我的code@Meera坦克,我试过你的解决方案,但不是working@RizwanSaleem请尝试使用$.each('.inst_amount',function(index,val)代替$.each($inst,function(index,val))好吗?因为您无法从$(文档)中获得$inst.readyNo its正在计算呈现值,而不是动态添加的输入值。请参阅更新-I left one field value=“”,以测试它是否仍然有效
$(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));
});