最新select轉移工具箱
以下是三零網為大家整理的最新select轉移工具箱的文章,希望大家能夠喜歡!
在bs系統中,經常使用到select之間的轉移,這裡提供了一些通用方法,希望對大家有所幫助 : )
<SCRIPT language="javascript"> /*************************************************************************************************************** * 文 件 名:selectListTools.js * 建立時間:2004.6.23 * 創 建 人:LxcJie * 檔案描述:關于list清單框的一些工具方法 * * 主要方法: * 1, moveUp(oSelect,isToTop) ------------ 向上移動一個list清單框的選中項目, * 可以支援多選移動,可以設定是否移動到頂層 * 2, moveDown(oSelect,isToBottom)---------- 向下移動一個list清單框的選中項目, * 可以支援多選移動,可以設定是否移動到底層 * 3, moveSelected(oSourceSel,oTargetSel) ------ 在兩個清單框之間轉移資料 * 4, moveAll(oSourceSel,oTargetSel)--------- 轉移兩個清單框之間的全部資料 * 5, deleteSelectItem(oSelect) ----------- 删除所選的項目 * ****************************************************************************************************************/ /** * added by LxcJie 2004.6.23 * 使選中的項目上移 * oSelect: 源清單框 * isToTop: 是否移至選擇項到頂端,其它依次下移, * true為移動到頂端,false反之,預設為false */ function moveUp(oSelect,isToTop) { //預設狀态不是移動到頂端 if(isToTop == null) var isToTop = false; //如果是多選------------------------------------------------------------------ if(oSelect.multiple) { for(var selIndex=0; selIndex<oSelect.options.length; selIndex++) { //如果設定了移動到頂端标志 if(isToTop) { if(oSelect.options[selIndex].selected) { var transferIndex = selIndex; while(transferIndex > 0 && !oSelect.options[transferIndex - 1].selected) { oSelect.options[transferIndex].swapNode(oSelect.options[transferIndex - 1]); transferIndex --; } } } //沒有設定移動到頂端标志 else if(selIndex > 0) if(!oSelect.options[selIndex - 1].selected) oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]); } } //如果是單選-------------------------------------------------------------------- else var selIndex = oSelect.selectedIndex; if(selIndex <= 0) return; //如果設定了移動到頂端标志 if(isToTop) while(selIndex > 0) oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]); selIndex --; //沒有設定移動到頂端标志 else oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]); } /** * 使選中的項目下移 * isToTop: 是否移至選擇項到底端,其它依次上移, * true為移動到底端,false反之,預設為false function moveDown(oSelect,isToBottom) if(isToBottom == null) var isToBottom = false; var selLength = oSelect.options.length - 1; for(var selIndex=oSelect.options.length - 1; selIndex>= 0; selIndex--) if(isToBottom) while(transferIndex < selLength && !oSelect.options[transferIndex + 1].selected) oSelect.options[transferIndex].swapNode(oSelect.options[transferIndex + 1]); transferIndex ++; if(selIndex < selLength) if(!oSelect.options[selIndex + 1].selected) oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]); if(selIndex >= selLength - 1) if(isToBottom) while(selIndex < selLength - 1) oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]); selIndex ++; oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]); * 移動select的部分内容,必須存在value,此函數以value為标準進行移動 * oSourceSel: 源清單框對象 * oTargetSel: 目的清單框對象 function moveSelected(oSourceSel,oTargetSel) //建立存儲value和text的緩存數組 var arrSelValue = new Array(); var arrSelText = new Array(); //此數組存貯選中的options,以value來對應 var arrValueTextRelation = new Array(); var index = 0;//用來輔助建立緩存數組 //存儲源清單框中所有的資料到緩存中,并建立value和選中option的對應關系 for(var i=0; i<oSourceSel.options.length; i++) if(oSourceSel.options[i].selected) //存儲 arrSelValue[index] = oSourceSel.options[i].value; arrSelText[index] = oSourceSel.options[i].text; //建立value和選中option的對應關系 arrValueTextRelation[arrSelValue[index]] = oSourceSel.options[i]; index ++; //增加緩存的資料到目的清單框中,并删除源清單框中的對應項 for(var i=0; i<arrSelText.length; i++) //增加 var oOption = document.createElement("option"); oOption.text = arrSelText[i]; oOption.value = arrSelValue[i]; oTargetSel.add(oOption); //删除源清單框中的對應項 oSourceSel.removeChild(arrValueTextRelation[arrSelValue[i]]); * 移動select的整塊内容 function moveAll(oSourceSel,oTargetSel) //存儲所有源清單框資料到緩存數組 arrSelValue[i] = oSourceSel.options[i].value; arrSelText[i] = oSourceSel.options[i].text; //将緩存數組的資料增加到目的select中 //清空源清單框資料,完成移動 oSourceSel.innerHTML = ""; |