用JavaScript实现两个列表框的数据移动

<html><head>
<title>用JavaScript实现两个列表框的数据移动</title>
<script language="JavaScript">
function addOption(fromSelectObject, toSelectObject, maxLimit){
    var overMax = false;
    for(i=0; i<fromSelectObject.options.length; i++){
        if(fromSelectObject.options[i].selected == true){
            if(maxLimit != -1){
                if(toSelectObject.options.length >= maxLimit){
                    overMax = true;
                    break;
                }
            }
            toSelectObject.options[toSelectObject.options.length] = new Option(fromSelectObject.options[i].text, fromSelectObject.options[i].value, 0, 0);
            toSelectObject.options[toSelectObject.options.length-1].style.background = fromSelectObject.options[i].style.background;
            toSelectObject.options[toSelectObject.options.length-1].style.color = fromSelectObject.options[i].style.color;
        }
    }
    cancelAllSelected(fromSelectObject);
    filterSrcSelect(fromSelectObject, toSelectObject);
    if(overMax){
        alert("超过最大选择数");
    }
}

function deleteOption(fromSelectObject, toSelectObject, bakSelectObject){
   var canRemoveSrc = false;
   for(i=0; i<toSelectObject.options.length; i++){
       if(toSelectObject.options[i].selected == true){
           for(j=0; j<bakSelectObject.options.length; j++){
               if(toSelectObject.options[i].value == bakSelectObject.options[j].value){
                   canRemoveSrc = true;
                   break;
               }
           }
       }
       if(canRemoveSrc){
           break;
       }
   }
   removeSelected(toSelectObject);
   if(canRemoveSrc){
       removeAllOption(fromSelectObject);
       filterSrcWithBakSelect(bakSelectObject, fromSelectObject, toSelectObject);
   }
}

function removeSelected(selectObject){
    for(i=selectObject.options.length-1; i>=0; i--){
        if(selectObject.options[i].selected == true){
            selectObject.options.remove(i);
        }
    }
}

function removeAllOption(selectObject){
   for(i=selectObject.options.length-1; i>=0; i--){
       selectObject.options.remove(i);
   }
}

function filterSrcSelect(srcSelectObject, conSelectObject){
    for(i=0; i<conSelectObject.options.length; i++){
        for(j=0; j<srcSelectObject.options.length; j++){
            if(conSelectObject.options[i].value == srcSelectObject.options[j].value){
                srcSelectObject.options.remove(j);
            }
        }
    }
}

function filterSrcWithBakSelect(bakSelectObject, srcSelectObject, conSelectObject){
   for(i=0; i<bakSelectObject.options.length; i++){
       for(j=0; j<conSelectObject.options.length; j++){
           var ifExist = false;
           if(bakSelectObject.options[i].value == conSelectObject.options[j].value){
               ifExist = true;
               break;
           }
       }
       if(!ifExist){
           srcSelectObject.options[srcSelectObject.options.length] = new Option(bakSelectObject.options[i].text, bakSelectObject.options[i].value, 0, 0);
           srcSelectObject.options[srcSelectObject.options.length-1].style.background = bakSelectObject.options[i].style.background;
           srcSelectObject.options[srcSelectObject.options.length-1].style.color = bakSelectObject.options[i].style.color;
       }
   }
}

function doAllSelected(selectObject){
    for(i=0; i<selectObject.options.length; i++){
        selectObject.options[i].selected = true;
    }
}

function cancelAllSelected(selectObject){
    for(i=0; i<selectObject.options.length; i++){
        selectObject.options[i].selected = false;
    }
}

function changeGroup(){
}
</script>
</head>
<body>
<form method="post" name="form1" action="">
<table border="1" width="300">
<tr>
  <td width="40%">已选择</td>
  <td width="20%">&nbsp;</td>
  <td width="40%">
    <select name="group_select" onChange="changeGroup()">
      <option value="1001">中国</option>
      <option value="1002">janpig</option>
    </select>
  </td>
</tr>
<tr>
  <td>
    <select name="selected_charge_select" size="7" multiple ></select>
  </td>
  <td nowrap align="center">
    &nbsp;
    <input type="button" value="<< 选择" name="buttonAdd"  onClick="javascript:addOption(this.form.charge_list, this.form.selected_charge_select, -1)">
    &nbsp; <br><br>&nbsp;
    <input type="button" value="删除 >>" name="buttonDel"  onClick="javascript:deleteOption(this.form.charge_list, this.form.selected_charge_select,this.form.backup_charge_list);">
    &nbsp;
  </td>
  <td>
    <select name="charge_list" size="7" multiple>
      <option value="2001">北京</option>
      <option value="2002">沈阳</option>
      <option value="2003">上海</option>
      <option value="2004">武汉</option>
      <option value="2005">美国</option>
      <option value="2006">日本</option>
    </select>
    <div style="display:none">
    <select name="backup_charge_list" size="7">
      <option value="2001">北京</option>
      <option value="2002">沈阳</option>
      <option value="2003">上海</option>
      <option value="2004">武汉</option>
      <option value="2005">美国</option>
      <option value="2006">日本</option>
    </select>
    </div>
  </td>
</tr>
</table>
</form>
</body>
</html> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值