<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%"> </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">
<input type="button" value="<< 选择" name="buttonAdd" onClick="javascript:addOption(this.form.charge_list, this.form.selected_charge_select, -1)">
<br><br>
<input type="button" value="删除 >>" name="buttonDel" onClick="javascript:deleteOption(this.form.charge_list, this.form.selected_charge_select,this.form.backup_charge_list);">
</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>