基于jQuery實(shí)現(xiàn)表格數(shù)據(jù)的動(dòng)態(tài)添加與統(tǒng)計(jì)的代碼

圖(1.1)
某物流信息系統(tǒng)中的功能要求如圖1.1所示,表格中每一行代表一筆運(yùn)送貨物的信息,在錄入每行的計(jì)費(fèi)重量和費(fèi)率后,要求能按一定的公式,自動(dòng)計(jì)算運(yùn)送費(fèi)用,并且能自動(dòng)統(tǒng)計(jì)所有運(yùn)送貨物的總運(yùn)費(fèi)。運(yùn)送貨物信息的數(shù)據(jù)量(即表格的行數(shù))不定,要求能動(dòng)態(tài)增加、刪除,即表格的數(shù)據(jù)行數(shù)是動(dòng)態(tài)可維護(hù)的。同時(shí)為了方便操作,需要在頁(yè)面中能像使用鍵盤(pán)的上下左右方向鍵,在錄入的文本框之間進(jìn)行切換。每行的數(shù)據(jù)有一定的校驗(yàn)要求,比如單號(hào)必須為8位數(shù)字,件數(shù)和重量必須為數(shù)字...
單行貨物信息計(jì)算運(yùn)費(fèi)不難實(shí)現(xiàn),只需要在計(jì)費(fèi)重量和費(fèi)率的文本框?qū)ο蟮?/SPAN>onblur事件中,得到費(fèi)率和計(jì)費(fèi)重量,按照公式計(jì)算好運(yùn)費(fèi)即可。
總計(jì)費(fèi)用的統(tǒng)計(jì)也不難實(shí)現(xiàn),遍歷整個(gè)表格的所有費(fèi)用對(duì)象,統(tǒng)計(jì)其和,將計(jì)算結(jié)果放到總計(jì)的文本框?qū)ο蠹纯伞?/SPAN>
難點(diǎn)在動(dòng)態(tài)添加整行表格數(shù)據(jù),而且每行數(shù)據(jù)上的各文本框?qū)ο蟮氖录惨獙?shí)現(xiàn)自動(dòng)統(tǒng)計(jì)和運(yùn)算,有相當(dāng)?shù)碾y度。如果使用JavaScript需要調(diào)用Dom對(duì)象創(chuàng)建一個(gè)<tr>單元格,還需要在tr里面添加10多個(gè)單元格<td>對(duì)象,每個(gè)單元格<td>對(duì)象內(nèi)要添加文本框?qū)ο?/SPAN>,還需要在文本框?qū)ο笊享憫?yīng)onblur事件進(jìn)行運(yùn)費(fèi)計(jì)算,代碼量相當(dāng)大。
使用jQuery可以大大減輕工作量,在實(shí)際開(kāi)發(fā)中,使用了jQuery的clone(true)函數(shù),該函數(shù)可以創(chuàng)建一個(gè)jQury對(duì)象的副本,并且參數(shù)為true時(shí),可以復(fù)制該元素的所有事件處理函數(shù)。
我們可以在第一行中實(shí)現(xiàn)計(jì)算運(yùn)費(fèi)的運(yùn)算。然后點(diǎn)增加明細(xì)按鈕時(shí),調(diào)用jQuery 的clone(true)函數(shù),建立第一行的副本對(duì)象插入到表格下方,由于使用clone(true)可以復(fù)制對(duì)象的事件處理函數(shù),所以每行中文本框的onblur事件和運(yùn)費(fèi)計(jì)算函數(shù)也被成功復(fù)制,不需再做處理。大大減輕了工作量。
關(guān)鍵代碼
(一)創(chuàng)建克隆單元格對(duì)象并添加到表格中
var v=$("#tbin");//得到表格的jquery對(duì)象
//所有的數(shù)據(jù)行有一個(gè).MyRow的Class,得到數(shù)據(jù)行的大小
var vcount=$("#tbin tr").filter(".MyRow").size()+1;//表格有多少個(gè)數(shù)據(jù)行
var vTr=$("#tbin #trDataRow1"); //得到表格中的第一行數(shù)據(jù)
var vTrClone=vTr.clone(true);//創(chuàng)建第一行的副本對(duì)象vTrClone
vTrClone.appendTo(v);//把副本單元格對(duì)象添加到表格下方
(二)統(tǒng)計(jì)更新總金額
function UpdateTotal()//更新總金額
{
var vTotalMoney=0;//總金額的初始值為0;
var vTable=$("#tbin");//得到表格的jquery對(duì)象
var vTotal= vTable.find("#txtTotal") ;//得到總金額對(duì)象
var vtxtAfters=vTable.find("#txtMoney");//得到所有計(jì)算好的費(fèi)用對(duì)象;
vtxtAfters.each( //使用jQuery的each函數(shù)遍歷每行費(fèi)用對(duì)象,累加成總金額
function(i)
{
var vTempValue=$(this).val();
if(vTempValue=="")
{
vTempValue=0;
}
vTotalMoney=vTotalMoney+parseFloat(vTempValue);//計(jì)算總費(fèi)用
}
)//遍歷結(jié)束
vTotal.val(vTotalMoney); //將總費(fèi)用顯示到對(duì)應(yīng)文本框?qū)ο笾?
}
(三)計(jì)費(fèi)重量變化時(shí)計(jì)算費(fèi)用,并統(tǒng)計(jì)總費(fèi)用
$("#txtMoneyWeight").bind("change", function()
{
var vTotalMoney=0;//總金額的初始值為0;
var vtxtDetail=$(this);//得到變化的文本框?qū)ο?
var vVal=vtxtDetail.val();
var vtxtAfter=vtxtDetail.parent("td").parent("tr").find("#txtRate");//得到費(fèi)率;
var vtxtMoney=vtxtDetail.parent("td").parent("tr").find("#txtMoney");//得到費(fèi)用;
var vMoney=CalculatorMoney(vVal,vtxtAfter.val());//使用公式計(jì)算單行運(yùn)費(fèi)
vtxtMoney.val(vMoney); //顯示單行運(yùn)費(fèi)信息
UpdateTotal(); //調(diào)用函數(shù)統(tǒng)計(jì)更新總費(fèi)用
}); //變化腳本結(jié)束
鍵盤(pán)的控制和數(shù)據(jù)的校驗(yàn)在源程序中有詳細(xì)注釋,具體代碼可參考源程序。
- Jquery AJAX 用于計(jì)算點(diǎn)擊率(統(tǒng)計(jì))
- jquery中防刷IP流量軟件影響統(tǒng)計(jì)的一點(diǎn)對(duì)策
- 統(tǒng)計(jì)jQuery中各字符串出現(xiàn)次數(shù)的工具
- jquery統(tǒng)計(jì)輸入文字的個(gè)數(shù)并對(duì)其進(jìn)行判斷
- php和jquery實(shí)現(xiàn)地圖區(qū)域數(shù)據(jù)統(tǒng)計(jì)展示數(shù)據(jù)示例
- jquery統(tǒng)計(jì)用戶選中的復(fù)選框的個(gè)數(shù)
- jQuery圓形統(tǒng)計(jì)圖開(kāi)發(fā)實(shí)例
- jquery實(shí)現(xiàn)動(dòng)靜態(tài)條形統(tǒng)計(jì)圖
相關(guān)文章
JQuery 選項(xiàng)卡效果(JS與HTML的分離)
基于JQuery實(shí)現(xiàn)的一個(gè)選項(xiàng)卡效果,重點(diǎn)體現(xiàn)在HTML里沒(méi)有內(nèi)聯(lián)事件處理程序,而是定義在js文件里,做到行為與結(jié)構(gòu)的分離。2010-04-04
拉動(dòng)滾動(dòng)條加載數(shù)據(jù)的jquery代碼
拉動(dòng)滾動(dòng)條加載數(shù)據(jù)的jquery代碼,需要的朋友可以參考下2012-05-05
jQuery實(shí)現(xiàn)簡(jiǎn)單的抽獎(jiǎng)游戲
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)簡(jiǎn)單的抽獎(jiǎng)游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
JQuery Easyui Tree的oncheck事件實(shí)現(xiàn)代碼
最近項(xiàng)目中有用到Easyui Tree,我想要checkbox的選中事件,但是api只提供了一個(gè)onClick事件,我百度、google之后,額,還是看js吧2010-05-05
jquery自定義類似$.ajax()的方法實(shí)現(xiàn)代碼
$.ajax()的方法想必大家都不會(huì)陌生,下面為大家介紹下使用jquery自定義類實(shí)現(xiàn)類似$.ajax()的方法,感興趣的朋友可以參考下2013-08-08
jQuery插件HighCharts實(shí)現(xiàn)氣泡圖效果示例【附demo源碼】
這篇文章主要介紹了jQuery插件HighCharts實(shí)現(xiàn)氣泡圖效果,結(jié)合完整實(shí)例形式分析了jQuery插件HighCharts繪制氣泡圖的實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03

