• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:form内に2つ以上のブロック要素があるとjavascriptが動作し)

form内に2つ以上のブロック要素があるとjavascriptが動作しない

このQ&Aのポイント
  • form内に2つ以上のブロック要素があると、javascriptが正常に動作しません。デザインのために、ラジオボタンとチェックボックスを<div>で囲むと、javascriptが無効になってしまいます。
  • javascriptの書き方を変えても解決しないため、スクリプトの修正方法を教えていただきたいです。
  • 初心者の質問ですが、お助けいただけると嬉しいです。よろしくお願いします。

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

  • ベストアンサー
  • nine999
  • ベストアンサー率44% (512/1140)
回答No.1

<DIV>をすべて取り除いても、正常に動作しませんでした。 今度は全部が使用可能な状態になります。 ノードを調べて処理をするのではなく、idで処理する方が判りやすいと思います。 1つ目のラジオボタンを選ぶと「h」を取得し、hで始まるチェックボックス2つに対してのみ使用可能にする手順でどうでしょうか。

barakamon
質問者

お礼

無事に動作しました! 一応、動作したスクリプトを書いておきます。 function checkfunc(){ var list = document.getElementById('wrap').getElementsByTagName('input'); var flag; for(var i=0;list[i];i++) { if(list[i].type == 'radio'){ flag = list[i].checked; continue; } list[i].disabled = ! flag; } }

barakamon
質問者

補足

ご回答ありがとうございます。 一部のdivを削ると動作はします。↓ <body onload="checkfunc()"> <div id="wrap"> <form id="chkbtn" action="#"> <div class="radio_style"> <input type="radio" name="now" value="1" onclick="checkfunc()" onkeypress="checkfunc()" checked="selected" />宿泊<br /> <input type="checkbox" id="h1box" checked="selected" />&nbsp;&nbsp;ホテル<br /> <input type="checkbox" id="h2box" checked="selected" />&nbsp;&nbsp;ビシネスホテル<br /> </div> <div class="radio_style"> <input type="radio" name="now" value="2" onclick="checkfunc()" onkeypress="checkfunc()">グルメ <input type="checkbox" id="g1box" checked="selected" />&nbsp;&nbsp;うどん<br /> <input type="checkbox" id="g2box" checked="selected" />&nbsp;&nbsp;そば<br /> </div> </form> </div> </body> idを使う方ほうですね、なるほど。 試してみます!

関連するQ&A