dポイントプレゼントキャンペーン実施中!

こんにちは,よろしくお願いします。
ラジオボタンの値でテキストフィールドのような要素をdisabledにしようと考えています。
そこで
<input name="AAA" type="radio" id="AAA_0" value="0" checked="checked" onclick="xxx()"/>選択肢A
<input name="AAA" type="radio" id="AAA_1" value="1" onclick="xxx()"/>選択肢B
とし,javascriptのxxx functionの中では,

if(document.getElementById("AAA").value == 0){
document.getElementById("BBB").disabled = true;
}else if(document.getElementById("AAA").value == 1){
document.getElementById("BBB").disabled = false;
}
}
としてみたところ,いつも document.getElementById("AAA").value の値が0のままでいくら選択肢Bをクリックしても切り替わりません。
一体何が悪いのでしょうか。教えてください。よろしくお願い申し上げます。

A 回答 (5件)

> document.getElementById("AAA").value



"AAA"となっているのはname属性ですけど...。

> ラジオボタンの値でテキストフィールドのような要素をdisabledに
> しようと考えています。

テキストフィールドのような要素とは?

> document.getElementById("BBB")

"BBB"というid属性がついているフォームがあるのでしょうか。
こんな感じで書いてみました。
試していないので動作するかどうかは分かりません。

var radio = document.getElementsByName('AAA');
for(var i = 0; i < radio.length; i++) {
if(radio[i].checked) {
document.getElementById('BBB').disabled = i \ 2 ? false : true;
}
}
    • good
    • 0
この回答へのお礼

5件の回答をいただき,ありがとうございました。
皆さんのご指導を参考にして次のように解決しました。
本当にありがとうございました。
javascriptでは,
function xxx(){
if(document.f1.AAA[0]checked){
document.getElementById("BBB").disabled = true;
}else if(document.f1.AAA[1]checked){
document.getElementById("BBB").disabled = false;
}
}

<form action="#" method="post" name="f1" id="f1">
<input name="AAA" type="radio" id="AAA_0" value="0" checked="checked" onclick="xxx()"/><label for="AAA_0">選択肢A</label>
<input name="AAA" type="radio" id="AAA_1" value="1" onclick="xxx()"/><label for="AAA_1">選択肢B</label>
<input type="text" name="BBB" value="" />
</form>

以上です。
御回答いただいた方々にそれぞれお礼すべきところですが,ここにまとめて記載させていただきました。あしからずご了承ください。
またよろしくお願いします。ありがとうございました。

お礼日時:2008/09/05 14:58

radio で name と id が同じだと、やばくない?


id はそもそも唯一だし・・・。^^;
    • good
    • 0
この回答へのお礼

_pipi_さん,御回答ありがとうございました。
お礼は ANo.5 にまとめて掲載させていただきました。これからもよろしくお願いもうしあげます。

お礼日時:2008/09/05 15:03

択一なのであれば、elseはいらないかもしれませんね。


またthisをつかえばすっきりします。

<script>
function xxx(obj){
var f=obj.form;
f.elements["BBB"].disabled=(obj.value != "0");
}
</script>
<form>
<input name="AAA" type="radio" id="AAA_0" value="0" checked="checked" onclick="xxx(this)"/><label for="AAA_0">選択肢A</label>
<input name="AAA" type="radio" id="AAA_1" value="1" onclick="xxx(this)"/><label for="AAA_1">選択肢B</label><br />
項目BBB:<input name="BBB" type="text" />
</form>
    • good
    • 0
この回答へのお礼

yambejpさん,御回答ありがとうございました。
お礼は ANo.5 にまとめて掲載させていただきました。これからもよろしくお願いもうしあげます。

お礼日時:2008/09/05 15:02

<input name="AAA" type="radio" checked onClick="document.getElementById('BBB').disabled = true">選択肢A


<input name="AAA" type="radio" onClick="document.getElementById('BBB').disabled = false">選択肢B

もしくは、
<input name="AAA" type="radio" value="true" checked onClick="test(this.balue)">選択肢A
<input name="AAA" type="radio" value="false" onClick="test(this.balue)">選択肢B
function test(v){ document.getElementById('BBB').disabled=v;}
    • good
    • 0
この回答へのお礼

_pipi_さん,御回答ありがとうございました。
お礼は ANo.5 にまとめて掲載させていただきました。これからもよろしくお願いもうしあげます。

お礼日時:2008/09/05 15:01

ところでnameとidが一致してないのはなんで?



http://homepage3.nifty.com/aya_js/js2/js217.htm
簡単に言うと選択されている数値ではなくチェックされているのかを調べる。
    • good
    • 0
この回答へのお礼

SAYKAさん,御回答ありがとうございました。
お礼は ANo.5 にまとめて掲載させていただきました。これからもよろしくお願いもうしあげます。

お礼日時:2008/09/05 15:00

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