- ベストアンサー
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をクリックしても切り替わりません。 一体何が悪いのでしょうか。教えてください。よろしくお願い申し上げます。
- みんなの回答 (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; } }
その他の回答 (4)
radio で name と id が同じだと、やばくない? id はそもそも唯一だし・・・。^^;
お礼
_pipi_さん,御回答ありがとうございました。 お礼は ANo.5 にまとめて掲載させていただきました。これからもよろしくお願いもうしあげます。
- yambejp
- ベストアンサー率51% (3827/7415)
択一なのであれば、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>
お礼
yambejpさん,御回答ありがとうございました。 お礼は ANo.5 にまとめて掲載させていただきました。これからもよろしくお願いもうしあげます。
<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;}
お礼
_pipi_さん,御回答ありがとうございました。 お礼は ANo.5 にまとめて掲載させていただきました。これからもよろしくお願いもうしあげます。
- SAYKA
- ベストアンサー率34% (944/2776)
ところでnameとidが一致してないのはなんで? http://homepage3.nifty.com/aya_js/js2/js217.htm 簡単に言うと選択されている数値ではなくチェックされているのかを調べる。
お礼
SAYKAさん,御回答ありがとうございました。 お礼は ANo.5 にまとめて掲載させていただきました。これからもよろしくお願いもうしあげます。
お礼
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> 以上です。 御回答いただいた方々にそれぞれお礼すべきところですが,ここにまとめて記載させていただきました。あしからずご了承ください。 またよろしくお願いします。ありがとうございました。