JS select转移工具箱的通用方法

在bs系统中,经常使用到select之间的转移,这里提供了一些通用方法,希望对大家有所帮助 : )感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧。
经测试代码如下:

 <SCRIPT language=javascript>
/*
 * 
 *
 * @param 
 * @author 编程之家 jb51.cc jb51.cc
  * 文 件 名: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(oSelect.options[selIndex].selected)
                 {
                     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]);
     }
 }

/**
  * added by LxcJie 2004.6.23
  * 使选中的项目下移
  *
  * oSelect: 源列表框
  * isToTop: 是否移至选择项到底端,其它依次上移,
  *          true为移动到底端,false反之,默认为false
  */
 function moveDown(oSelect,isToBottom)
 {
     //默认状态不是移动到顶端
     if(isToBottom == null)
         var isToBottom = false;
        
     var selLength = oSelect.options.length - 1;
    
     //如果是多选------------------------------------------------------------------
     if(oSelect.multiple)
     {
         for(var selIndex=oSelect.options.length - 1; selIndex>= 0; selIndex--)
         {
             //如果设置了移动到顶端标志
             if(isToBottom)
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     var transferIndex = selIndex;
                     while(transferIndex < selLength && !oSelect.options[transferIndex + 1].selected)
                     {
                         oSelect.options[transferIndex].swapNode(oSelect.options[transferIndex + 1]);
                         transferIndex ++;
                     }
                 }
             }
             //没有设置移动到顶端标志
             else
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     if(selIndex < selLength)
                     {
                         if(!oSelect.options[selIndex + 1].selected)
                             oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
                     }
                 }
             }
         }
     }
     //如果是单选--------------------------------------------------------------------
     else
     {
         var selIndex = oSelect.selectedIndex;
         if(selIndex >= selLength - 1)
             return;
         //如果设置了移动到顶端标志
         if(isToBottom)
         {
             while(selIndex < selLength - 1)
             {
                 oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
                 selIndex ++;
             }
         }
         //没有设置移动到顶端标志
         else       
             oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
     }
 }

/**
  * added by LxcJie 2004.6.23
  * 移动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]]);
     }
 }

/**
  * added by LxcJie 2004.6.23
  * 移动select的整块内容
  *
  * oSourceSel: 源列表框对象
  * oTargetSel: 目的列表框对象
  */
 function moveAll(oSourceSel,oTargetSel)
 {
     //建立存储value和text的缓存数组
     var arrSelValue = new Array();
     var arrSelText = new Array();
    
     //存储所有源列表框数据到缓存数组
     for(var i=0; i<oSourceSel.options.length; i++)
     {
         arrSelValue[i] = oSourceSel.options[i].value;
         arrSelText[i] = oSourceSel.options[i].text;
     }
    
     //将缓存数组的数据增加到目的select中
     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.innerHTML = ;
 }

/**
  * added by LxcJie 2004.6.23
  * 删除选定项目
  *
  * oSelect: 源列表框对象
  */
 function deleteSelectItem(oSelect)
 {
     for(var i=0; i<oSelect.options.length; i++)
     {
         if(i>=0 && i<=oSelect.options.length-1 && oSelect.options[i].selected)
         {
             oSelect.options[i] = null;
             i --;
         }
     }
 }

//js文件完毕
 </SCRIPT>
 <meta http-equiv=Content-Type content=text/html; charset=gb2312>
 <BODY style=font-size:12px>
 <FORM name=form1 method=post action=>
   <SELECT name=left size=10 id=select multiple style=width:100px; >
     <OPTION value=aaaaa>aaaaa</OPTION>
     <OPTION value=bbbbb>bbbbb</OPTION>
     <OPTION value=ccccc>ccccc</OPTION>
   </SELECT>
   <INPUT style=border:1px solid black  type=button value=>>> onClick=moveSelected(document.all.left,document.all.right)>
   <INPUT style=border:1px solid black  type=button value=<<< onClick=moveSelected(document.all.right,document.all.left)>
   <SELECT name=right size=10 id=select multiple style=width:100px; >
     <OPTION value=ddddd>ddddd</OPTION>
     <OPTION value=eeeee>eeeee</OPTION>
     <OPTION value=fffff>fffff</OPTION>
     <OPTION value=ggggg>ggggg</OPTION>
     <OPTION value=hhhhh>hhhhh</OPTION>
     <OPTION value=iiiii>iiiii</OPTION>
   </SELECT>
   <br><br><br><br>
   <DIV style=background-color:#CCCCCC;padding:2px>
   <INPUT style=border:1px solid black  type=button value=上移一格 onClick=moveUp(document.all.right);moveUp(document.all.left)>
   <INPUT style=border:1px solid black  type=button value=下移一格 onClick=moveDown(document.all.right);moveDown(document.all.left)>
   <INPUT style=border:1px solid black  type=button value=上移到顶
 onClick=moveUp(document.all.right,true);moveUp(document.all.left,true)>
   <INPUT style=border:1px solid black  type=button value=下移到顶
 onClick=moveDown(document.all.right,true);moveDown(document.all.left,true);>  (支持多选移动)
   </DIV>
   <BR><BR>
   <DIV style=background-color:#CCCCCC; padding:5px; width:100%; position:relative>
   右移:<INPUT type=radio name=ifAll value=right checked> <br>
   左移:<INPUT type=radio name=ifAll value=left><br><br>
   <INPUT type=button value=移动全部 style=border:1px solid black  onClick=judgeMove()>
   </DIV>
   <br><br>
   <DIV style=background-color:#CCCCCC; padding:5px>
       <INPUT type=button value= 删 除  style=border:1px solid black 
 onClick=deleteSelectItem(document.all.left);deleteSelectItem(document.all.right)>
   </div>
 </FORM>
 </BODY>
 <SCRIPT language=javascript>
 function judgeMove()
 {
     var arrRadio = document.all.ifAll;
     var valOfRadio;
     for(var i=0; i<arrRadio.length; i++)
     {
         if(arrRadio[i].checked)
         {
             valOfRadio = arrRadio[i].value;
             break;
         }
     }
     if(valOfRadio == left)
         moveAll(document.all.right,document.all.left);
     if(valOfRadio == right)
         moveAll(document.all.left,document.all.right);
 }
 </SCRIPT>
// 来自:编程之家 jb51.cc(jb51.cc) 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)