用 Javascript 實現的“Dual listbox”(雙向選取器)

來源:互聯網
上載者:User
javascript

 這是我用 Javascript 製作的“Dual listbox”(雙向選取器)的一個應用樣本,是從My Code中摳出來的。在網頁編程中經常會用到。

    也許我的實現太煩瑣了,希望大家有更好的代碼貢獻出來。

<html>
<head>
  <title>選取器</title>
  <link href="./style/style.css" rel="stylesheet" type="text/css">
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)">
  <meta http-equiv="Page-Exit" content="blendTrans(Duration=1.0)">
  <script language="javascript">
    function openwin(url, l, t, w ,h)
    {open(url,'','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width='+ w +',height='+ h +',left='+ l +',top='+ t);}

    function check_and_submit(frm)
    {
      SelectAll(frm.SelectedItem);
      frm.submit();
    }
  </script>
</head>

<body>

<form name="frm1" id="frm1" method="post" action="save.asp">
<input name="allowsubmit" type="hidden" value="OK">

<table width="500" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr height=10><td colspan=3></td></tr>
  <tr>
    <td width="220" align=center valign="top">
      已指派該使用者管理的欄目:<br><br>
      <select name="SelectedItem" id="SelectedItem" size=12 multiple="true">
        <option>無</option>

      </select>
      </select>
    </td>
    <td width="60" align=center>
      <br><br>
      <button ><</button><br><br>
      <button ><<</button><br><br><br><br>
      <button >></button><br><br>
      <button >>></button><br>
    </td>
    <td width="220" align=center valign="top">
      待分配的欄目:<br><br>
      <select name="WaitSelectItem" size=12 multiple=true>
        <option>師大要聞</option>
        <option>視頻新聞</option>
        <option>圖片新聞</option>
        <option>專題要聞</option>
        <option>十萬個為什麼</option>
        <option>代碼測試</option>
        <option>www.why100000.com</option>
      </select>
    </td>
  </tr>
</table>
</form>

<script language="javascript">
 function MoveSingleItem(sel_source, sel_dest)
 {
   if (sel_source.selectedIndex==-1)  //源:沒有點選任何項目
     return;

   if (sel_source.options[0].text=="無") //源:只有“無”項目
     return;

   if (sel_dest.options[0].text=="無") //目標:只有“無”項目,則先刪除該提示性項目
     sel_dest.options.remove(0);

   var SelectedText = sel_source.options[sel_source.selectedIndex].text;
   sel_dest.options.add(new Option(SelectedText));
   sel_source.options.remove(sel_source.selectedIndex);

   if (sel_source.options.length==0)  //源:如果刪除完所有有用項目,則添加提示項目:“無”
     sel_source.options.add(new Option("無"));
 }

 function MoveAllItems(sel_source, sel_dest)
 {
   if (sel_source.options[0].text=="無") //源:只有“無”項目
     return;

   if (sel_dest.options[0].text=="無")   //目標:只有“無”項目,則先刪除該提示性項目
     sel_dest.options.remove(0);

   //首先拷貝所有項目到目標:
   var sel_source_len = sel_source.length;
   for (var j=0; j<sel_source_len; j++)
   {
     var SelectedText = sel_source.options[j].text;
     sel_dest.options.add(new Option(SelectedText));
   }

   //然後刪除“源”所有項目:
   while ((k=sel_source.length-1)>=0)
   {
     if (sel_source.options[0].text=="無") //源:只有“無”項目
       break;
     sel_source.options.remove(k);
     if (sel_source.options.length==0)  //源:如果刪除完所有有用項目,則添加提示項目:“無”
       sel_source.options.add(new Option("無"));
   }
 }

 function SelectAll(theSel)  //選中select中全部項目
 { for (i = 0 ;i<theSel.length;i++)
    theSel.options[i].selected = true;
 }
</script>



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。