仕事を頑張る人のおしりトラブル対策

ちょっとjavascriptが判らないので質問をさせてください。

HTMLのセレクトメニューで
hoge1
hoge2
hoge3
といったようなメニューが複数あるのです。
でこの一つ目のメニューでhoge1を選択した場合には、二つ目のメニュー以降ではhoge1を選択できなくしたいのです。

このような時どのように記述すれば良いのでしょうか、教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

作ってみました。


とはいえ投稿しないだけで作ることは良くありますが。

<select name="select1">
<option selected>hoge1
<option>hoge2
<option>hoge3
</select>
<select name="select1">
<option>hoge1
<option selected>hoge2
<option>hoge3
</select>
<select name="select1">
<option>hoge1
<option>hoge2
<option selected>hoge3
</select>

<script>
var sels;
onload=function(){
 sels=document.getElementByName('select1');
 for(var i=0,s;s=sels[i];i++)
  s.onchange=check;
}
function check(e){
 if(!e)e=event;
 e=e.target||e.srcElement;
 for(var i=0,s;s=sels[i];i++){
  if(e==s)
   continue;
  if(s.selectedIndex==e.selectedIndex){
   alert('同じのはダメ');
   e.selectedIndex=-1;
   break;
  }
 }
}
</script>
全角スペースでインデントしてます。
同じ物が選択されていたらalert()ってだけですけど。
選択できない様にして、その後どうするかってのも問題になりますが。
選択した物と同じアイテムを他のセレクトフィールドから削除するなら、かなり面倒かなぁ。

行ではなく値でチェックするなら
s.selectedIndexのかわりにs.options[s.selectedIndex].textやs.valueとe.~で。
    • good
    • 0

力押しで書いたらこんな感じ。


実際に書くときはもうちょいマシにしてください。

<html>
<script type='text/javascript'>

// メニュー1変更時処理
function chgMenuItem() {

//メニュー数変更
menu2.length =2;

// メニューの項目内容変更
if(menu1.value == '1') {
chgOpParam(menu2,0,"hoge2",2);
chgOpParam(menu2,1,"hoge3",3);
}else if(menu1.value == '2') {
chgOpParam(menu2,0,"hoge1",1);
chgOpParam(menu2,1,"hoge3",3);
}else if(menu1.value == '3') {
chgOpParam(menu2,0,"hoge1",1);
chgOpParam(menu2,1,"hoge2",2);
}
return 0;
}

// メニューのパラメータ変更(内部処理用)
function chgOpParam(objMenu,iIndex,strTxt,strVal) {
objMenu.options[iIndex].text = strTxt;
objMenu.options[iIndex].value= strVal;
}
</script>
<body>
<select name='menu1' onchange='chgMenuItem()'>
<option value='1'>hoge1
<option value='2'>hoge2
<option value='3'>hoge3
</select>
<select name='menu2'>
<option value='2'>hoge2
<option value='3'>hoge3
</select>
</body>
</html>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング