jquery动态计算编辑状态或非编辑状态值的和

来源:互联网 发布:淘宝没有扣分的违规 编辑:程序博客网 时间:2024/06/05 11:37

我们经常会遇到一个这样的问题:动态的添加值并计算值的总和显示(包含新增、修改、删除)。通常有两种最常用的方法:

其实仔细比较就会发现:一个是获取编辑状态的值var ed = $('#cost_list').datagrid('getEditor', {index:index,field:'project_cost'});//通过字段名称获取编辑器  var pay = $(ed.target).val();//获取字段值  一个是获取编辑状态关闭的值,本人总体感觉第一种方法比较灵活。

1.起初所有行都处于编辑关闭状态,当点击某一行开始编辑这一行数据,并为这一行添加失去焦点事件,当失去焦点时关闭编辑器,并获取值进行计算:

例:

var now_index  = 0;

//添加单击事件

onClickRow:  function(rowIndex, rowData){

var oldCost = rowData.project_cost;//获取项目成本旧值

now_index = rowIndex;
$('#cost_list').datagrid('selectRow', rowIndex).datagrid('beginEdit', rowIndex);//开始编辑某行
var ed = $('#cost_list').datagrid('getEditor', {index:rowIndex,field:'project_cost'});//获取当前的编辑器
ed.target.bind('blur', function () {//绑定失去焦点事件
$('#cost_list').datagrid('endEdit', rowIndex);//结束编辑
var cost = rowData.project_cost;//获取勾选行填写的值
if(cost == null || cost == '' || cost == undefined){
cost = 0;
}
var cost_sum = $('#cost_sum').html();//获取项目成本金额
if(cost_sum == null || cost_sum ==undefined || cost_sum == ''){
cost_sum = 0;
}
if(oldCost > cost){
var subCost = parseFloat(parseFloat(oldCost) - parseFloat(cost)).toFixed(2);
var totalCost = parseFloat(parseFloat(cost_sum) - parseFloat(subCost)).toFixed(2);//计算累计项目成本金额
$('#cost_sum').html(totalCost);
}else if(oldCost < cost){
var subCost = parseFloat(parseFloat(cost) - parseFloat(oldCost)).toFixed(2);
var totalCost = parseFloat(parseFloat(cost_sum) + parseFloat(subCost)).toFixed(2);//计算累计项目成本金额
$('#cost_sum').html(totalCost);
}

});

}

2.起初所有的行都处于编辑状态,并新增的行也处于编辑状态,填写值后获取直接获取值经行计算,到最后一步保存的时候关闭所有行的编辑状态:

例:

var cost = $('#cost_sum').html();//获取累计项目成本金额
if (cost == null || cost == '' || cost == undefined) {
cost = 0;
}
var ed = $('#cost_list').datagrid('getEditor', {index:index,field:'project_cost'});//通过字段名称获取编辑器
var pay = $(ed.target).val();//获取字段值
var month = $('#cost_list').datagrid('getEditor', {index:index,field:'cost_month'});
var monthValue = $(month.target).datebox('getValue');//获取日期编辑器的值

if (pay == null || pay == '' || pay == undefined) {
pay = 0;
}
var cost_sum = parseFloat(parseFloat(cost) - parseFloat(pay)).toFixed(2);
$('#cost_sum').html(cost_sum);
0 0
原创粉丝点击