js把頁面明細行資料多個欄位組成陣列,並獲取某個欄位值最大和其次大的資料賦值到文字框;
要求:前臺新增頁面的明細行中,有列下拉框選擇分類和一列付款金額的輸入框,明細行上面有兩個輸入框,要求在明細行選擇的分類和付款金額中篩選付款金額之和第一高的的分類和金額、第二高的分類和金額自動複製到上面的兩個輸入框中;
思路:迴圈明細表,把所有的明細表的分類和付款金額放到json陣列中,然後迴圈json陣列把分類重複的付款金額相加併合並,然後根據付款金額從高到底排序,那麼付款金額最高和第二高的分類資訊也就能在json陣列中獲取繫結到上面的文字框了;
此程式碼的實現在bpm平臺上實現有所不同:(效果圖如下)
程式碼分享:
//獲取明細所有分類的最大付款額和分類名稱(相同分類的要加起來)
function leibiezonge(){
var list='';
var detaillist=$('[id=XDropDownList3]');
var valuelist=[];
var newlist=[];
var map={};
//迴圈明細表
for(var i=0;i<detaillist.length;i++){
//獲取分類名稱
var newid = $(detaillist[i]).find(".yz-xform-field-ele")[0].value;
//獲取分類之後的付款金額
var newvalue=$(detaillist[i]).parent("div").parent("td").parent("tr").children("td").eq(7).children("#XTextBox14").find(".yz-xform-field-ele")[0].value;
//全部放進陣列中
valuelist.push({
leibie: newid,
jine: newvalue
});
}
//這是如果有重複的分類就合併分類並付款金額相加
if(valuelist!=undefined){
for(var i=0;i<valuelist.length;i++){
var ai=valuelist[i];
if(!map[ai.leibie]){
newlist.push({
leibie: ai.leibie,
jine: ai.jine
});
map[ai.leibie] = ai;
}else{
for(var j=0;j<newlist.length;j++){
var ji=newlist[j];
if(ji.leibie==ai.leibie){
ji.jine=parseInt(ai.jine==''?"0":ai.jine)+parseInt(ji.jine==''?"0":ji.jine);
break;
}
}
}
}
}
//這是根據付款金額從高到低的排序
function getSortFun(order, sortBy) {
var ordAlpah = (order == 'asc') ?'>' : '<';
var sortFun = new Function('a', 'b', 'return a.'+ sortBy + ordAlpah + 'b.'+ sortBy + '?1:-1');
return sortFun;
}
newlist.sort(getSortFun('desc','jine'));
var attrfenlei=newlist[0].leibie;
var attrjine=newlist[0].jine==''?"0":newlist[0].jine;
//為所需要的文字框賦值
$("#XTextBox4").find(".yz-xform-field-ele").attr('value', attrjine);
$("#XLabel3").find(".yz-xform-field-ele").html(attrfenlei);
if(newlist[1]!=undefined){
$("#XTextBox5").find(".yz-xform-field-ele").attr('value', newlist[1].jine==''?"0":newlist[1].jine);
$("#XLabel4").find(".yz-xform-field-ele").html(newlist[1].leibie);
}
//return newlist[0].leibie+(newlist[0].jine==''?"0":newlist[0].jine);
}