天天看點

select轉移工具箱

最新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 = "";