分享
 
 
 

select转移工具箱

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在bs系统中,经常使用到select之间的转移,这里提供了一些通用方法,希望对大家有所帮助 :)

把下面的内容拷贝到一个htm文件中即可以看到效果.

<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(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()">&nbsp;

</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>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有