热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » JavaScript/JQuery编程 » select转移工具箱

select转移工具箱

论坛链接
  • select转移工具箱
  • 发布时间:2007-09-16 15:43:32    浏览数:5932    发布者:tznktg    设置字体【   
在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(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.selected)
{
//存储
arrSelValue[index] = oSourceSel.options.value;
arrSelText[index] = oSourceSel.options.text;
//建立value和选中option的对应关系
arrValueTextRelation[arrSelValue[index]] = oSourceSel.options;
index ++;
}
}

//增加缓存的数据到目的列表框中,并删除源列表框中的对应项
for(var i=0; i<arrSelText.length; i++)
{
//增加
var oOption = document.createElement("option");
oOption.text = arrSelText;
oOption.value = arrSelValue;
oTargetSel.add(oOption);
//删除源列表框中的对应项
oSourceSel.removeChild(arrValueTextRelation[arrSelValue]);
}
}

/**
* 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 = oSourceSel.options.value;
arrSelText = oSourceSel.options.text;
}

//将缓存数组的数据增加到目的select中
for(var i=0; i<arrSelText.length; i++)
{
var oOption = document.createElement("option");
oOption.text = arrSelText;
oOption.value = arrSelValue;
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.selected)
{
oSelect.options = 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.checked)
{
valOfRadio = arrRadio.value;
break;
}
}
if(valOfRadio == "left")
moveAll(document.all.right,document.all.left);
if(valOfRadio == "right")
moveAll(document.all.left,document.all.right);
}
</SCRIPT>
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理