CGI-BBS > JAVA/JavaScript > JavaScript > 二個のリストボックス間で、項目を行き来さる方法


カレッヂ
カレッヂ


質問者 難民  投稿日 2005/12/17(土) 20:32:01
初めまして、仕事で画面を作成することになったのですが、Java Scrptの
使用は初めてのため、以下の点でつまづいております。

環境はWindowsXP Pro、IE6.0です。

同一FORM内に、2つのリストボックスを設置し、左側のリストボックスで
選択した項目(複数)を、ボタンを押下することにより右側のリストボックスに
移動させる、または右側から左側に移動させる方法を教えていただきたいです。

イメージとしては、Outlook Expressので、アドレス一覧から送信アドレスを
複数選択し、送信欄に設定する感じでしょうか?
異なる点は、選択された項目が移動元のリストボックスからはなくなるところ
です。

よろしくお願いします。

【習熟度】初めて

回答者 m035  [削除]  投稿日 2006/1/6(金) 01:19:00
適当ですがサンプルを書いてみました。


<html>
<head>
<script type="text/javascript">
<!--
function move(a,b){
	var f=document.forms[0];
	if(f["sel"+a].length>0&&f["sel"+a].selectedIndex>-1&&f["sel"+a].options[f["sel"+a].selectedIndex].value.length>0){
		var s=f["sel"+a].options[f["sel"+a].selectedIndex];
		input(b,s.text,s.value);
		f["sel"+b].size=f["sel"+b].length;
		f["sel"+b].selectedIndex=0;
		for(var i=0,j=0;i<f["sel"+a].length;i++){
			s=f["sel"+a].options[i];
			if(i!=f["sel"+a].selectedIndex){
				f["sel"+a].options[j]=new Option(s.text,s.value);
				j++;
			}
		}
		f["sel"+a].length--;
		f["sel"+a].selectedIndex=0;
	}
}

function input(a,b,val){
	var f=document.forms[0];
	f["sel"+a].options[f["sel"+a].length]=new Option(b,val);
	f["sel"+a].size=f["sel"+a].length;
}
//-->
</script>
</head>
<body>
<form>
<select name="sel1" size="0">
</select>
<select name="sel2" size="0">
</select><br>
<script type="text/javascript">
<!--
var v1=[["佐藤","satou@hoge.co.jp"],["鈴木","suzuki@hoge.com"],["伊藤","ito@hoge.ne.jp"]];
var v2=[["高橋","takahasi@hoge.com"],["山田","yamada@hoge.co.jp"]];
//["表示内容","データ(value)"]の形で書いてあり、アドが長すぎる場合に省略して表示することを考え、
//表示内容と実際にそのoptionの持つvalueを分けてみました。
for(var i=0;i<v1.length;i++)input(1,v1[i][0],v1[i][1]);
for(var i=0;i<v2.length;i++)input(2,v2[i][0],v2[i][1]);
//-->
</script>
<input type="button" value="→" onclick="move(1,2)">
<input type="button" value="←" onclick="move(2,1)">
</form>
</body>
</html>

返信(回答)する

 


Web裏技