プロが教える店舗&オフィスのセキュリティ対策術

以前こちらで、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>

A 回答 (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>
    • good
    • 0
この回答へのお礼

ソースまで改修していただいて、ありがとうございます。
思った通りの表現ができそうです。

お礼日時:2008/09/12 12:00

なにを質問しているのかわからないのですが


selectのoptionのvalueを適当なものにかえたときに
pのidに対応したdisabledの設定をしたいのかなぁ・・

objectで、対比表をつくれば一発だとおもいますけど
    • good
    • 0
この回答へのお礼

ありがとうございます。間抜けな質問ですみません。
おかげさまで、うまくいきました。

お礼日時:2008/09/12 11:57

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