- ベストアンサー
プルダウンメニューに連動するdisableの切替で
以前こちらで、selectメニューに連動するdisableの切替方法をお聞きして、下記のようなものを作成しました。 ここでCGIの仕様上、selectメニュー内のvalue値に日本語(1単語)を使用したいと思い、value値以外の値を取得しようとしてみましたが、うまくいきません。 何かよい方法はありますでしょうか? <html> <head> <script type="text/javascript"> window.onload = function(){ disableAllGr(); } function disableAllGr(){ var inputList = document.getElementsByTagName('p'); for(var i=0;i<inputList.length;i++){ var obj=inputList[i]; if(obj.id.match(/^gr_/)){ var n=obj.firstChild; while(n){ if(n.nodeName=="INPUT" && n.type=="radio") n.disabled=true; if(n.nodeName=="INPUT" && n.type=="checkbox") n.disabled=true; if(n.nodeName=="INPUT" && n.type=="text") n.disabled=true; if(n.nodeName=="SELECT") n.disabled=true; n=n.nextSibling; } } } } function fchk2(obj) { disableAllGr(); var nameList = obj.value.split(/,/); for( var i in nameList){ if(!document.getElementById('gr_'+nameList[i])) return false; var n=document.getElementById('gr_'+nameList[i]).firstChild; while(n){ if(n.nodeName=="INPUT" && n.type=="radio") n.disabled=false; if(n.nodeName=="INPUT" && n.type=="checkbox") n.disabled=false; if(n.nodeName=="INPUT" && n.type=="text") n.disabled=false; if(n.nodeName=="SELECT") n.disabled=false; n=n.nextSibling; } } } </script> </head> <body> <form> <p id="ctr_FLAG"> <select onchange='fchk2(this)'> <option selected="selected" value="">選んでください</option> <option value="A,A2">Aをアクティブ</option> <option value="A,A2,B,B2">AとBをアクティブ</option> <option value="A,A2,B,B2,C,C2">AとBとCをアクティブ</option> </select> </p> <p>A---------------------</p> <p id="gr_A"> <input type="radio" value="2mm" />テストA <input type="radio" value="3mm" />テストAA </p> <p id="gr_A2"> <input type="checkbox" value="2mm" /> テストA <input type="checkbox" value="3mm" /> テストAA </p> <p>B-----------------------</p> <p id="gr_B"> <input type="radio" value="2mm" />テストB <input type="radio" value="3mm" />テストBB </p> <p id="gr_B2"> <input type="checkbox" value="2mm" />テストB <input type="checkbox" value="3mm" />テストBB </p> <p>C-----------------------</p> <p id="gr_C"> <input type="radio" value="2mm">テストC <input type="radio" value="3mm"/>テストCC </p> <p id="gr_C2"> <input type="checkbox" value="2mm"> テストC <input type="checkbox" value="3mm"/>テストCC </p> <p>-----------------------</p> <p><input type="submit"></p> </form> </body> </html>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<html> <head> <script type="text/javascript"> window.onload=fchk2; function fchk2(elm) { n=[0,1,3,7][elm?elm.selectedIndex:0]; disb('s1',n&1); disb('s2',n&2); disb('s3',n&4); } function disb(obj,tf){ o=document.getElementById(obj).firstChild; while(o){ if(o.nodeName=='INPUT') o.disabled=tf?false:true; o=o.nextSibling; } } </script> </head> <body> <form id="abcd"> <select onchange='fchk2(this)'> <option selected="selected" value="">選んでください</option> <option value="ホンダ">ホンダをアクティブ</option> <option value="トヨタとトヨタ">ホンダとトヨタをアクティブ</option> <option value="日産"とホンダとトヨタ>すべてをアクティブ</option> </select> </p> <div id="s1">ホンダ---------------------<br> <input type="radio" name="a0" value="2mm" />テストA <input type="radio" name="a0" value="3mm" />テストAA <input type="checkbox" id="a1" value="2mm" /> テストA <input type="checkbox" id="a2" value="3mm" /> テストAA </div> <div id="s2">トヨタ---------------------<br> <input type="radio" name="b0" value="2mm" />テストB <input type="radio" name="b0" value="3mm" />テストBB <input type="checkbox" id="b1" value="2mm" />テストB <input type="checkbox" id="b2" value="3mm" />テストBB </div> <div id="s3">日産---------------------<br> <input type="radio" name="c0" value="2mm">テストC <input type="radio" name="c0" value="3mm"/>テストCC <input type="checkbox" id="c1" value="2mm"> テストC <input type="checkbox" id="c2" value="3mm"/>テストCC </div> <p><input type="submit"></p> </form> </body> </html>
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
なにを質問しているのかわからないのですが selectのoptionのvalueを適当なものにかえたときに pのidに対応したdisabledの設定をしたいのかなぁ・・ objectで、対比表をつくれば一発だとおもいますけど
お礼
ありがとうございます。間抜けな質問ですみません。 おかげさまで、うまくいきました。
お礼
ソースまで改修していただいて、ありがとうございます。 思った通りの表現ができそうです。