• ベストアンサー

radioボタンの値の取得の仕方?

こんにちは,よろしくお願いします。 ラジオボタンの値でテキストフィールドのような要素を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をクリックしても切り替わりません。 一体何が悪いのでしょうか。教えてください。よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.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; } }

emikouji
質問者

お礼

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

その他の回答 (4)

noname#84373
noname#84373
回答No.4

radio で name と id が同じだと、やばくない? id はそもそも唯一だし・・・。^^;

emikouji
質問者

お礼

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

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

択一なのであれば、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>

emikouji
質問者

お礼

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

noname#84373
noname#84373
回答No.2

<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;}

emikouji
質問者

お礼

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

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

ところでnameとidが一致してないのはなんで? http://homepage3.nifty.com/aya_js/js2/js217.htm 簡単に言うと選択されている数値ではなくチェックされているのかを調べる。

emikouji
質問者

お礼

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