• 締切済み

セレクトボックスで警告

Javascriptの初心者です。 セレクトボックスが二つ(a,b)あるとして、 セレクトボックスa中の項目いずれかを選択肢すると、 セレクトボックスbのどの項目をも選択できないようにするため、 警告をだしたいのですが、 よい方法をご教授していただけなでしょうか。 よろしくお願いいたします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

こうするとどうでしょうか? <script language=javascript> function disableSelect(obj,sel){ if(typeof sel=="string") patern=sel; else patern="["+sel.join("|")+"]"; patern="^"+patern+"$"; var f=obj.form; var v=obj.value; for(var i =0 ;i<f.length;i++){ if(f[i].type=="select-one"){ if(f[i].name.match(patern) && v!=""){ f[i].disabled=true; }else{ f[i].disabled=false; } } } } </script> <form> <!--aを選択すると配列で指定したbとcが使えない--> <select name="a" onChange="disableSelect(this,Array('b','c'))"> <option value="">選択して</option> <option value="a1">a1</option> <option value="a2">a2</option> <option value="a3">a3</option> </select> <!--bを選択すると配列で指定したcが使えない--> <select name="b" onChange="disableSelect(this,Array('c'))"> <option value="">選択して</option> <option value="b1">b1</option> <option value="b2">b2</option> <option value="b3">b3</option> </select> <!--cを選択するとbが使えない(配列でなくてもいい)--> <select name="c" onChange="disableSelect(this,'b')"> <option value="">選択して</option> <option value="c1">c1</option> <option value="c2">c2</option> <option value="c3">c3</option> </select> <!--dは指定されてないので常に放置--> <select name="d"> <option value="">選択して</option> <option value="d1">d1</option> <option value="d2">d2</option> <option value="d3">d3</option> </select> </form>

akiranogi
質問者

補足

再度回答ありがとうございます。 しかし、どうしてか 上記を組み込むと、 onChange="disableSelect(this,'b')"> は成功しますが、他のものはできませんでした。 セレクトボックスの数は関係あるのでしょうか。 現在の状態はセレクトボックスが6つ(a~f)あり、 a中のa2~a6までを選択すると、b~fまでを選択できなくなり、 a1を選択するとまたb~fは選択できるようにしたいのです。 また、各セレクトボックスにはonChange="keisan()"として、 数量の合算、百の位繰り上げ、3桁ごとにカンマをつける formが組み込まれております。 <select name="a" onChange="keisan()" onChange="disableSelect(this,Array('b','c'))"> などというように、二つは一緒に動作できないようなのです。 お手数かけますが、どなたかよろしくお願いいたします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

こんな感じでしょか。 <script language=javascript> function disableSelect(obj){ var f=obj.form; var v=obj.value; for(var i =0 ;i<f.length;i++){ if(f[i].type=="select-one"){ if(f[i]!=obj && v!=""){ f[i].disabled=true; }else{ f[i].disabled=false; } } } } </script> <form> <select name="a" onChange="disableSelect(this)"> <option value="">選択して</option> <option value="a1">a1</option> <option value="a2">a2</option> <option value="a3">a3</option> </select> <select name="b" onChange="disableSelect(this)"> <option value="">選択して</option> <option value="b1">b1</option> <option value="b2">b2</option> <option value="b3">b3</option> </select> <select name="c" onChange="disableSelect(this)"> <option value="">選択して</option> <option value="c1">c1</option> <option value="c2">c2</option> <option value="c3">c3</option> </select> </form>

akiranogi
質問者

補足

早速の回答、ありがとうございます。しかし、これではa欄を選択した場合、b欄もc欄も選択できないようになってしまいます。a欄を選択した場合、b欄は選択できないが、c欄は選択できるままにしたいと考えています。何か良い方法はございませんでしょうか。よろしくお願いいたします。 ちなみに、現在a~c欄に相当するセレクトボックスには、項目を選択 すると、金額は別のテキストボックスに表示されて、合算が算出 されるように設定しておりますので、 <SELECT NAME="hardware1" onChange="keisan()">となっております。 この箇所を <SELECT NAME="hardware1" onChange="keisan()" onChange="disableSelect(this)"> として大丈夫ということでしょうか。 ところで、 <script language=javascript> | | </script> までを理解できていないで補足をさせていただいています。 これはC言語を勉強しなければならないのでしょうか。 あわせて、よろしくお願いいたします。

noname#39970
noname#39970
回答No.1

disabled 属性を使って編集不可にする  ・・・とか とりあえず変更を検知するのは onChange http://www.tohoho-web.com/js/onevent.htm#onChange

関連するQ&A

  • セレクトボックス HTML javascript

    セレクトボックス HTML javascript php セレクトボックスの複数選択についてですがご教授よろしくお願いいたします。たとえばセレクトボックスを二つ作り 一つ目のセレクトボックスを ・フルーツ ・寿司 ・カレー フルーツを選択すると二つ目のセレクトボックスの中が ・りんご ・みかん ・なし 寿司を選択すると二つ目のセレクトボックスが ・いくら ・まぐろ ・うに このように 一つ目のセレクトボックスの選択によって 二つ目のセレクトボックスの中身を変えるにはどのようなコードを組めば よろしいのでしょうか。 現在 php javascript mysqlの勉強しています。 ご教授いただければ幸いです。

    • ベストアンサー
    • HTML
  • セレクトボックスのデータをリストボックスへ書き出す

    javascript初心者です。よろしくお願いします。 まず年月日を3つのセレクトボックスで作成する。 追加ボタンを押すと、選択した年月日のデータをリストボックスに書き出すことができる。 ※ここでリストボックスのサイズは3に指定しておき、項目が3以上の場合はスクロールさせる。 さらに削除ボタンを作成し、リストからデータを削除できるようにする。 以上のような仕組みを作りたいのですが... どうかよろしくお願いいたします。

  • セレクトボックス

    こんにちは。いつもお世話になっております。 セレクトボックスについて質問なのですが、JavaScrptを用いて セレクトボックスのどれかを自動的に選択する事は可能でしょうか? 具体的には、年月日をとりだして、セレクトボックスの対応する項目を自動選択したいのです。 どなたかご存知の方いらっしゃいましたら、どうか教えてください。 よろしくお願いします。

  • javascriptでのセレクトボックスについて。

    javascriptを使ったセレクトボックスについて教えてください。 教えてgooのカテゴリ選択のように、セレクトボックスでjavascripを使い、 一つめのselectボックスでは ・1 ・2 ・3 のオプションを選択可能に 二つめのselectボックスでは、 1が選択されたら ・1の1 ・1の2 ・1の3 のオプションを選択可能に 2が選択されたら ・2の1 ・2の2 ・2の3 を選択可能に 3が選択されたら ・3の1 ・3の2 ・3の3 を選択可能に と言う風にはどうすれば出来るでしょうか? 教えてください、お願いします。

  • セレクトボックスのスタイルについて

    http://www.lockon.co.jp/blog/javascript/post_7.html 上記のようなセレクトボックスの中身が変わるセレクトボックスで、 常に右のセレクトボックスの上から3番目までの背景色を固定にしたいのですが、どのようにすればいいかわからずにおります。 どなたかご教授ください。

  • セレクトボックスの選択状態について

    セレクトボックスの横にチェックボックスがあり、 チェックボックスON→セレクトボックスはAの内容 チェックボックスOFF→セレクトボックスはBの内容 となるものがあります。 問題は、これに値を保持する機能を付けたいのです。 例えば、チェックボックスにチェックがある状態でセレクトボックスの3番目の要素を選択していたとします。そこで、チェックをはずし一度Bの内容を表示させてから、再度チェックを付けAの内容に戻した時に3番目の要素が選択されている状態にしたいです。逆の場合も同様にしたいです。アドバイスを頂けたらと思います。宜しくお願い致します。 <script type="text/javascript"> <!-- a = 0; b = 0; txt = {}; txt["A"] = new Array("設定なし","A1","A2"); txt["B"] = new Array("設定なし","B1","B2","B3"); function set(select_box,check_box){ if (document.forms[0].elements[check_box].checked) { key = "A"; b = document.forms[0].elements[select_box].options.selectedIndex; } else { key = "B"; a = document.forms[0].elements[select_box].options.selectedIndex; } while (document.forms[0].elements[select_box].options[0]){ document.forms[0].elements[select_box].options[0] = null; // セレクトボックスのメニューを消去 } for (i=0; i<txt[key].length; i++){ document.forms[0].elements[select_box].options[i] = new Option(txt[key][i],txt[key][i]); // セレクトボックスのメニューの項目を生成・表示テキストとvalue値を設定 } if (key = "A") { document.forms[0].elements[select_box].options.selectedIndex = a; } else if (key = "B") { document.forms[0].elements[select_box].options.selectedIndex = b; } } // --> </script>

  • 複数のセレクトボックスで

    二つのセレクトボックスがあり、それぞれ ボックス1⇒1、2 ボックス2⇒1、2、3 と選択項目があります。 ボタンは一つで、それぞれの組み合わせによって別々のURLに飛ばすもの作りたいのですが、どうしたらいいんでしょう?

    • ベストアンサー
    • PHP
  • セレクトボックスの初期選択と選択保持

    セレクトボックスで選択した日付でカレンダーの検索を行いたいです。 起動したときは当日日付を表示させ、検索後は選択した日付をそのまま表示させておきたいのですがうまくいきません。 javascriptを使用するのではないかと思うのですが、初心者のため記述の仕方がよくわかりません。 どなたかご教授いただけるとうれしいです。よろしくおねがいします。

  • チェックボックスとセレクトボックスの使い分け

    ふと疑問に感じたので質問させていただきます 皆様はどういう風にセレクトボックスとチェックボックスの 使い分けを行っていますか?(単一選択時) 私の場合、 文字数が多いときや、選択項目が多いときはセレクトボックス チェックボックスは選択項目が短いとき、 または全体を一目で把握したいとき としているのですが、正直結構そのときの気分に左右されます 何かこういうときはこっちを使うといいという考えがあれば教えて下さい よろしくお願いいたします

  • テクストボックスからセレクトボックスへ

    1.テキストボックスにテキストを入力 2.追加ボタンを押す 3.セレクトボックスに表示 4.セレクトボックスに追加した項目を選択し削除ボタンで削除できる 以下のようなプログラムを教えていただけますでしょうか?

専門家に質問してみよう