zoukankan      html  css  js  c++  java
  • 用 Javascript 实现的“Dual listbox”(双向选择器)


        这是我用 Javascript 制作的“Dual listbox”(双向选择器)的一个应用示例,是从我的代码中抠出来的。在网页编程中经常会用到。

        也许我的实现太烦琐了,希望大家有更好的代码贡献出来。

    <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 onClick="MoveSingleItem(WaitSelectItem, SelectedItem)">&lt;</button><br><br>
          <button onClick="MoveAllItems(WaitSelectItem, SelectedItem)">&lt;&lt;</button><br><br><br><br>
          <button onClick="MoveSingleItem(SelectedItem, WaitSelectItem)">&gt;</button><br><br>
          <button onClick="MoveAllItems(SelectedItem, WaitSelectItem)">&gt;&gt;</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>


  • 相关阅读:
    判断JS数据类型的四种方法
    JavaScript正则表达式精简
    virtio介绍
    DPDK与SRIOV应用场景及性能对比
    KVM和Xen的区别
    理解 JavaScript 闭包
    JS数组常用操作方法总结
    JavaScript中的 NaN 与 isNaN
    如何在Unity中复制多个组件并粘贴到另一个GameObject上
    Unity Umotion 导入动作发生漂移的解决办法
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4247608.html
Copyright © 2011-2022 走看看