<script language=javascript>
function selectMove(oSource,oTarget,cWhich)  //两个选择框选项之间的移动,oSource为源选择框,oTarget为目标选择框,cWhich为提示文字,取值”左“或”右“。
{
  if(!oSource.options.length)
  {
    alert(cWhich+"侧列表中已没有选项可选,无法移动!");
    return;
  }
  if(oSource.selectedIndex==-1)
  {
    alert("操作前您首先应该从"+cWhich+"侧列表中选择一项!");
    return;
  }
  var mySld=new Array();
  for(i=0;i<oSource.options.length;i++)
    if(oSource.options[i].selected)
      mySld[mySld.length++]=i;
  for(i=0;i<mySld.length;i++)
  {
    oTarget.options.length++;
    oTarget.options[oTarget.options.length-1].text=oSource.options[mySld[i]].text;
    oTarget.options[oTarget.options.length-1].value=oSource.options[mySld[i]].value;
  }
  for(i=0;i<mySld.length;i++)
  {
    for(j=mySld[i]-i;j<oSource.options.length-1;j++)
    {
      oSource.options[j].text=oSource.options[j+1].text;
      oSource.options[j].value=oSource.options[j+1].value;
    }
    oSource.options.length--;
  }
}function moveAll(oSource,oTarget)
{
  var n=oTarget.options.length;
  oTarget.options.length=n+oSource.options.length;
  for(i=n;i<oTarget.options.length;i++)
  {
    oTarget.options[i].text=oSource.options[i-n].text;
    oTarget.options[i].value=oSource.options[i-n].text.value;
  }
  oSource.options.length=0;
}
</script><form name=form1>
<table class=setrole_tab>
  <tr>
    <td>
      未加入角色<br>
      <select size=15 style="width:150px;" name=notadded_role ondblclick="selectMove(document.form1.notadded_role,document.form1.added_role,'左')" multiple>
        <option>aaaaaaaa</option>
        <option>bbbbbbbb</option>
        <option>cccccccc</option>
        <option>dddddddd</option>
      </select>
    </td>
    <td>
      <a href="javascript:moveAll(document.form1.notadded_role,document.form1.added_role);">全部右移</a><br>
      <a href="javascript:selectMove(document.form1.notadded_role,document.form1.added_role,'左')"><img src=images/move_right.gif alt=右移></a><br>
      <a href="javascript:selectMove(document.form1.added_role,document.form1.notadded_role,'右')"><img src=images/move_left.gif alt=左移></a><br>
      <a href="javascript:moveAll(document.form1.added_role,document.form1.notadded_role);">全部左移</a>
    </td>
    <td>
      已加入角色<br>
      <select size=15 style="width:150px;" name=added_role ondblclick="selectMove(document.form1.added_role,document.form1.notadded_role,'右')" multiple>
        <option>eeeeeeee</option>
        <option>ffffffff</option>
        <option>gggggggg</option>
      </select>
    </td>
  </tr>
</table>
</form>
提示:按住Ctrl键可进行多选

解决方案 »

  1.   

    http://fason.nease.net/samples/js/moveoptions.html
      

  2.   

    <table border=0 cellpadding=0 cellspacing=0><form name=meizz>
      <tr><td>
        <select id=list1 size=8 ondblclick="moveOption(this, this.form.list2)">
          <option value=A>aaaaaaaaaa
          <option value=B>bbbbbbbbbb
          <option value=C>cccccccccc
          <option value=D>dddddddddd
          <option value=E>eeeeeeeeee
          <option value=F>ffffffffff
          <option value=G>gggggggggg
          <option value=H>hhhhhhhhhh
        </select></td>
      <td width=40 align=center>
        <input name=add type=button value=">>>" onclick="moveOption(this.form.list1, this.form.list2)"><br><br>
        <input name=sub type=button value="<<<" onclick="moveOption(this.form.list2, this.form.list1)">
      </td><td>
        <select id=list2 size=8 ondblclick="moveOption(this, this.form.list1)">
        </select>
      </td></tr></form>
    </table><script language="JavaScript"><!--
    function moveOption(e1, e2){
        try{
            var e = e1.options[e1.selectedIndex];
            e2.options.add(new Option(e.text, e.value));
            e1.options.remove(e1.selectedIndex);
        }   catch(e){}
    }
    //--></script>
      

  3.   

    function move(fbox,tbox)//&Ecirc;&micro;&Iuml;&Ouml;LIST&Ntilde;&iexcl;&Iuml;&icirc;&para;&Ocirc;&micro;÷
    {
    for(var i=0; i<fbox.options.length; i++) {
    if(fbox.options[i].selected && fbox.options[i].value != "") {
    for(var j=0;j<tbox.options.length;j++)
    {
    if(tbox.options[j].value==fbox.options[i].value){
    alert("&Oacute;&ETH;&Ouml;&Oslash;&cedil;&acute;&Ntilde;&iexcl;&sup3;&micro;&pound;&not;&Ccedil;&euml;&Ouml;&Oslash;&ETH;&Acirc;&Ntilde;&iexcl;&Ocirc;&ntilde;&pound;&iexcl;");
    return false;
    }
    }
    // &Ocirc;&ouml;&frac14;&Oacute;&Iuml;&icirc;&Auml;&iquest;&Aacute;&ETH;±í&micro;&frac12;&Oacute;&Ograve;&sup2;à
    var no = new Option();
    no.value = fbox.options[i].value;
    no.text = fbox.options[i].text;
    // no.selected=true;
    tbox.options[tbox.options.length] = no; // &Ccedil;&aring;&iquest;&Otilde;×ó&sup2;à&micro;&Auml;&Iuml;&icirc;&Auml;&iquest;&Aacute;&ETH;±í
    //fbox.options[i].value = "";
    //fbox.options[i].text = "";
    }
    }
    //BumpUp(fbox);
    //SortD(tbox);
    }function deloptions(fbox) {
    for(var i=0; i<fbox.options.length; i++) {
    // if(fbox.options[i].selected==false){
    // alert("&Ccedil;&euml;&Iuml;&Egrave;&Ntilde;&iexcl;&Ocirc;&ntilde;&Egrave;&Euml;&Ocirc;±&pound;&iexcl;");
    // return false;
    // }
    if(fbox.options[i].selected && fbox.options[i].value != "") {
    fbox.options[i].value = "";
    fbox.options[i].text = "";
    }
    }
    BumpUp(fbox);
    //fbox.options[0].text="-&Iacute;¨&Ouml;&ordf;&Ocirc;±&sup1;¤-"
    }// &Ccedil;&aring;&sup3;&yacute;&iquest;&Otilde;&micro;&Auml;&Iuml;&icirc;&Auml;&iquest;&Aacute;&ETH;±í
    function BumpUp(box) {
    for(var i=0; i<box.options.length; i++) {
    if(box.options[i].value == "") {
    for(var j=i; j<box.options.length-1; j++) {
    box.options[j].value = box.options[j+1].value
    box.options[j].text = box.options[j+1].text
    }
    var ln = i
    break
    }
    }
    if(ln < box.options.length) {
    box.options.length -= 1;
    BumpUp(box);
    }
    }function SortD(box) {
    var temp_opts = new Array()
    var temp = new Object()
    // &micro;÷&Oacute;&Atilde;&Aacute;&Ugrave;&Ecirc;±&Ecirc;&yacute;×é
    for(var i=0; i<box.options.length; i++) {
    temp_opts[i] = box.options[i]
    } //&Aring;&Aring;&ETH;ò
    for(var x=0; x<temp_opts.length-1; x++) {
    for(var y=(x+1); y<temp_opts.length; y++) {
    if(temp_opts[x].text > temp_opts[y].text) {
    temp = temp_opts[x].text
    temp_opts[x].text = temp_opts[y].text
    temp_opts[y].text = temp
    }
    }
    }
    for(var i=0; i<box.options.length; i++) {
    box.options[i].value = temp_opts[i].value
    box.options[i].text = temp_opts[i].text
    }
    }function Select(box) {
    for(var i=0; i<box.options.length; i++) {
    box.options[i].selected = true;
    }
    }
    </script>
      

  4.   

    <% Option Explicit %>
    <HTML>
    <HEAD>
    <link type="text/css" rel="stylesheet" href="../css/main.css">
    <TITLE>请选择人员</TITLE>
    </HEAD>
    <BODY>
    <!--#include file="../inc/conn.asp"--><%
    dim objID,opt'定义对象编号
    objID=trim(Request("objID"))
    opt=trim(Request("opt"))
    dim conn, rs 
    set conn = server.CreateObject("ADODB.Connection")
    conn.open strConn
    conn.CursorLocation = 3set rs = conn.execute("exec getAll 'Department'") 
    %>
    <TABLE width="400" border="1" align="center" cellPadding=0 cellSpacing=0 bordercolor="#FFFFFF">
      
      <TR align="center" bgcolor="lightblue">
        <TD><img src="../images/sysIco/3.gif" width="16" height="16">部门:</TD>
        <TD colspan="2"><img src="../images/sysIco/2.gif" width="16" height="16">成员:</TD>
        <TD><img src="../images/sysIco/1.gif" >人员列表:</TD>
      </TR>
        <TR>
        <TD colspan="4">&nbsp;</TD>
      </TR>
     <TR valign="top">
    <TD align="center">
    <SELECT id=S1  class="multiSel"   name=S1 onchange="change1(); "> 
    <OPTION value="" ></OPTION>
    <%if rs.eof then
    response.write "<script>alert('目前没有部门');window.close();</script>"
    Response.End
    else  
    do while not rs.eof%>
    <OPTION value="<%=rs("departmentID")%>" ><%=rs("department")%></OPTION>
    <% 
    rs.MoveNext
    loop
    end if
    rs.close
    %>
    </SELECT> </TD>
    <TD align="center">
    <SELECT id=S2      class="multiSel" size=2    name=S2  > 
    </SELECT> </TD>
    <TD align="center">
    <INPUT  type=button value="全选" class="btn" title="全选" onclick="addAll();"><br>
    <INPUT  type=button value=" >> " class="btn" title="添加" onclick="addOne();"><br>
    <INPUT  type=button value=" << " class="btn" title="移出" onclick="delOne();"><br>
    <INPUT  type=button value="全删" class="btn" title="全删" onclick="remove(S3);"><br>
    <INPUT  type=button value="确定" class="btn" title="确定" onclick="OK();" ><br>
    <INPUT  type=button value="取消" class="btn" title="取消" onclick="NO();" > </TD>
    <TD align="center"><SELECT id=S3 class="multiSel" size=2 name=S3 >
    </SELECT> </TD>
    </TR>
     <TR>
        <TD></TD>
        <TD></TD>
        <TD></TD>
        <TD></TD></TR>
    </TABLE>
    <%=opt%><br><%=objID%>  <%
    Dim A1,A2,A3'人员ID和姓名,部门这三列
    set rs = conn.execute("exec getAll 'Person'")
    do while not rs.eof 
    A1=A1 & "," & rs("userID")'人员ID 
    A2=A2 & "," & chr(34) & rs("realName") & chr(34)  '人员姓名 
    A3=A3 & "," & rs("departmentID")'人员部门 
     rs.MoveNext
    loop  
    rs.close
    set rs = nothing
    conn.close
    set conn = nothing
    '下面这些为了传递给客户端数组用的,一次加载的数据少的连动
    A1=mid(A1,2)
    A2=mid(A2,2)
    A3=mid(A3,2)
     %> 
    <SCRIPT >
    //创建变量'人员ID和姓名,部门这三列
    var opt="<%=opt%>" ;
    var objID="<%=objID%>";
    var A1 = new Array(<%=A1%>);//人员ID
    var A2 = new Array(<%=A2%>);//人员名单 
    var A3 = new Array(<%=A3%>);//'部门 
    function change1()
    {
    if(S1.value!= "")
    { //移除2
    remove(S2);
    for(var i=0;i<A3.length;i++ )
    {//如果部门ID是被选中的,加上人员编号和名字
    if(A3[i]==parseInt(S1.value))
    {
    add(S2,A1[i],A2[i]);
    }
    }
    }
    }
    function add(obj,v,t)
    {
    var ooo=document.createElement("<OPTION>");
    ooo.value=v;
    ooo.text=t;
    obj.add(ooo);
    }
    function remove(obj)
    { var count=obj.options.length;
    for(var i=0;i<count;i++)
    {
    obj.remove(0);
    }
    }
    function addAll()
    {
    for(var i=0;i<S2.options.length;i++)

    if(isExist(S2.options[i].value)!= true);
    {
    add(S3,S2.options[i].value,S2.options[i].text);
    }
    }
    }
    function isExist(x)
    {
    var flag=false;
    for(var i=0;i<S3.options.length;i++)
    {
    if (parseInt(S3.options[i].value)==x) 
    {
    flag=true;
    break;  
    }
    }
    return flag;
    }
    function addOne()
    {
    if(isExist(S2.value)!=  true)

    add(S3,S2.value,S2.options(S2.selectedIndex).text);
    }
    }
    function delOne(){
    if(S3.selectedIndex>=0)
    {
      S3.remove(S3.selectedIndex);
     }
    }
    function OK()
    {
    var peopleIDlist=new String("");
    var peopleNamelist=new String("");
    for(var i=0;i<S3.options.length;i++)
    {  
    peopleIDlist=peopleIDlist + S3.options[i].value + ",";
    peopleNamelist=peopleNamelist + S3.options[i].text + ",";
    }  
    dialogArguments.document.getElementsByName(opt+'ID'+objID)[0].value=peopleIDlist.slice(0,peopleIDlist.length-1);
    dialogArguments.document.getElementsByName(opt+objID)[0].value=peopleNamelist.slice(0,peopleNamelist.length-1);
    dialogArguments.document.getElementsByName(opt+objID)[0].title=peopleNamelist.slice(0,peopleNamelist.length-1);
    self.close();
    }
    function NO()
    {
    self.close;
    }
    function findSlibling(x)
    {
     //window.document.getElementsByName
    }
    function trim(x)
    {}
     </SCRIPT> 
     
    </BODY>
    </HTML>
      

  5.   

    <HTML>
    <HEAD>
    <TITLE>移动下拉框-www.51windows.Net</TITLE>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <META NAME="Description" CONTENT="Power by 51windows.Net">
    </HEAD><BODY>
    <!-- meizz -->
    <table border=0 cellpadding=0 cellspacing=0><form name=meizz>
      <tr><td>
        <select id=list1 size=8 ondblclick="moveOption(this, this.form.list2)">
          <option value=A>aaaaaaaaaa
          <option value=B>bbbbbbbbbb
          <option value=C>cccccccccc
          <option value=D>dddddddddd
          <option value=E>eeeeeeeeee
          <option value=F>ffffffffff
          <option value=G>gggggggggg
          <option value=H>hhhhhhhhhh
        </select></td>
      <td width=40 align=center>
        <input name=add type=button value=">>>" onclick="moveOption(this.form.list1, this.form.list2)"><br><br>
        <input name=sub type=button value="<<<" onclick="moveOption(this.form.list2, this.form.list1)">
      </td><td>
        <select id=list2 size=8 ondblclick="moveOption(this, this.form.list1)">
        </select>
      </td></tr></form>
    </table><script language="JavaScript"><!--
    function moveOption(e1, e2){
        try{
            var e = e1.options[e1.selectedIndex];
            e2.options.add(new Option(e.text, e.value));
            e1.options.remove(e1.selectedIndex);
        }   catch(e){}
    }
    //--></script></BODY>
    </HTML>