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>