基于jQuery实现表格数据的动态添加与统计的代码


Posted in Javascript onJanuary 31, 2011

基于jQuery实现表格数据的动态添加与统计的代码
                                                          图(1.1)
    某物流信息系统中的功能要求如图1.1所示,表格中每一行代表一笔运送货物的信息,在录入每行的计费重量费率后,要求能按一定的公式,自动计算运送费用,并且能自动统计所有运送货物的总运费。运送货物信息的数据量(即表格的行数)不定,要求能动态增加、删除,即表格的数据行数是动态可维护的。同时为了方便操作,需要在页面中能像使用键盘的上下左右方向键,在录入的文本框之间进行切换。每行的数据有一定的校验要求,比如单号必须为8位数字,件数和重量必须为数字...
    单行货物信息计算运费不难实现,只需要在计费重量和费率的文本框对象的onblur事件中,得到费率和计费重量,按照公式计算好运费即可。<?XML:NAMESPACE PREFIX = O />

       总计费用的统计也不难实现,遍历整个表格的所有费用对象,统计其和,将计算结果放到总计的文本框对象即可。

       难点在动态添加整行表格数据,而且每行数据上的各文本框对象的事件也要实现自动统计和运算,有相当的难度。如果使用JavaScript需要调用Dom对象创建一个<tr>单元格,还需要在tr里面添加10多个单元格<td>对象,每个单元格<td>对象内要添加文本框对象,还需要在文本框对象上响应onblur事件进行运费计算,代码量相当大。

       使用jQuery可以大大减轻工作量,在实际开发中,使用了jQueryclone(true)函数,该函数可以创建一个jQury对象的副本,并且参数为true,可以复制该元素的所有事件处理函数。

我们可以在第一行中实现计算运费的运算。然后点增加明细按钮时,调用jQuery clone(true)函数,建立第一行的副本对象插入到表格下方,由于使用clone(true)可以复制对象的事件处理函数,所以每行中文本框的onblur事件和运费计算函数也被成功复制,不需再做处理。大大减轻了工作量。
    关键代码
(一)创建克隆单元格对象并添加到表格中

var v=$("#tbin");//得到表格的jquery对象 
//所有的数据行有一个.MyRow的Class,得到数据行的大小 
var vcount=$("#tbin tr").filter(".MyRow").size()+1;//表格有多少个数据行 
var vTr=$("#tbin #trDataRow1"); //得到表格中的第一行数据 
var vTrClone=vTr.clone(true);//创建第一行的副本对象vTrClone 
vTrClone.appendTo(v);//把副本单元格对象添加到表格下方

(二)统计更新总金额
function UpdateTotal()//更新总金额 
{ 
var vTotalMoney=0;//总金额的初始值为0; 
var vTable=$("#tbin");//得到表格的jquery对象 
var vTotal= vTable.find("#txtTotal") ;//得到总金额对象 
var vtxtAfters=vTable.find("#txtMoney");//得到所有计算好的费用对象; 
vtxtAfters.each( //使用jQuery的each函数遍历每行费用对象,累加成总金额 
function(i) 
{ 
var vTempValue=$(this).val(); 
if(vTempValue=="") 
{ 
vTempValue=0; 
} 
vTotalMoney=vTotalMoney+parseFloat(vTempValue);//计算总费用 
} 
)//遍历结束 
vTotal.val(vTotalMoney); //将总费用显示到对应文本框对象中 
}

(三)计费重量变化时计算费用,并统计总费用
$("#txtMoneyWeight").bind("change", function() 
{ 
var vTotalMoney=0;//总金额的初始值为0; 
var vtxtDetail=$(this);//得到变化的文本框对象 
var vVal=vtxtDetail.val(); 
var vtxtAfter=vtxtDetail.parent("td").parent("tr").find("#txtRate");//得到费率; 
var vtxtMoney=vtxtDetail.parent("td").parent("tr").find("#txtMoney");//得到费用; 
var vMoney=CalculatorMoney(vVal,vtxtAfter.val());//使用公式计算单行运费 
vtxtMoney.val(vMoney); //显示单行运费信息 
UpdateTotal(); //调用函数统计更新总费用 
}); //变化脚本结束

键盘的控制和数据的校验在源程序中有详细注释,具体代码可参考源程序。

Javascript 相关文章推荐
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
Apr 20 Javascript
JS将秒换成时分秒实现代码
Sep 03 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
Nov 26 Javascript
javascript中函数作为参数调用的方法
Feb 09 Javascript
JavaScript省市级联下拉菜单实例
Feb 14 Javascript
Vue.js实战之组件的进阶
Apr 04 Javascript
Angularjs实现控制器之间通信方式实例总结
Mar 27 Javascript
微信小程序基础教程之worker线程的使用方法
Jul 15 Javascript
element ui分页多选,翻页记忆的实例
Sep 03 Javascript
vue.js实现三级菜单效果
Oct 19 Javascript
JS常见错误(Error)及处理方案详解
Jul 02 Javascript
jquery键盘事件介绍
Jan 31 #Javascript
javascript代码加载优化方法
Jan 30 #Javascript
javascript使用activex控件的代码
Jan 27 #Javascript
鼠标右击事件代码(asp.net后台)
Jan 27 #Javascript
javascript对数组的常用操作代码 数组方法总汇
Jan 27 #Javascript
JavaScript 注册事件代码
Jan 27 #Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
Jan 27 #Javascript
You might like
在线竞拍系统的PHP实现框架(二)
2006/10/09 PHP
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
js中将字符串转换成json的三种方式
2011/01/12 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
php实例分享之实现显示网站运行时间
2014/05/20 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
《母鸡》教学反思
2014/02/25 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
2014年售票员工作总结
2014/11/19 职场文书
2014年工程部工作总结
2014/11/25 职场文书
党组织结对共建协议书
2016/03/23 职场文书
实习报告范文
2019/07/30 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
Java 数组的使用
2022/05/11 Java/Android