form内に2つ以上のブロック要素があるとjavascriptが動作しません。
タイトルの通りですが、form内にラジオボタンとチェックボクスをdivで1つだけ囲むと
ラジオボタンで選択した箇所の2つのチェックボックスが有効になるようにはしたんですが、
デザインの為にこれをラジオボタンとチェックボックスとそれぞれ<div>で囲むとjavascriptが動かなくなります。
javascriptの書き方を変えれば行けるような気がするのですがギブアップしました。
どなたかここを有効に出来るようなスクリプトを教えていただけないでしょうか。
初歩的な質問で申し訳なく思いますが、どうかよろしくお願いいたします。
<html>
<head>
<title>test</title>
<SCRIPT TYPE="text/javascript">
<!--
function checkfunc(){
var f=document.getElementById("chkbtn");
for(var i=0;i<f.length;i++){
if(f[i].type=="checkbox"){
f[i].disabled=true;
//チェックを元に戻す
f[i].checked = true;
}
}
for(var i=0;i<f.length;i++){
if(f[i].type=="radio" && f[i].checked){
var n=f[i].parentNode.firstChild;
//ラジオボタンのvalue値でカテゴリを判断
var radio_now = f[i].value;
while(n){
if(n.nodeName=="INPUT" && n.type=="checkbox") n.disabled=false;
n=n.nextSibling;
}
}
}
}
// -->
</SCRIPT>
<style type="text/css">
<!--
#wrap{
width: 170px;
margin: 0 auto;
}
.radio_style{
color: #fff;
width: 150px;
background-color: #505050;;
}
.detail{
margin-left: 10px;
}
-->
</style>
</head>
<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 />
</div>
<div class="detail">
<input type="checkbox" id="h1box" checked="selected" />ホテル<br />
<input type="checkbox" id="h2box" checked="selected" />ビシネスホテル<br />
</div>
<div class="radio_style">
<input type="radio" name="now" value="2" onclick="checkfunc()" onkeypress="checkfunc()">グルメ
</div>
<div class="detail">
<input type="checkbox" id="g1box" checked="selected" />うどん<br />
<input type="checkbox" id="g2box" checked="selected" />そば<br />
</div>
</form>
</div>
</body>
</html>
No.1ベストアンサー
- 回答日時:
<DIV>をすべて取り除いても、正常に動作しませんでした。
今度は全部が使用可能な状態になります。
ノードを調べて処理をするのではなく、idで処理する方が判りやすいと思います。
1つ目のラジオボタンを選ぶと「h」を取得し、hで始まるチェックボックス2つに対してのみ使用可能にする手順でどうでしょうか。
この回答への補足
ご回答ありがとうございます。
一部の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" />ホテル<br />
<input type="checkbox" id="h2box" checked="selected" />ビシネスホテル<br />
</div>
<div class="radio_style">
<input type="radio" name="now" value="2" onclick="checkfunc()" onkeypress="checkfunc()">グルメ
<input type="checkbox" id="g1box" checked="selected" />うどん<br />
<input type="checkbox" id="g2box" checked="selected" />そば<br />
</div>
</form>
</div>
</body>
idを使う方ほうですね、なるほど。
試してみます!
無事に動作しました!
一応、動作したスクリプトを書いておきます。
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;
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オフになっているチェックボッ...
-
【jsp/Java】チェックボックス...
-
form内に2つ以上のブロック要素...
-
チェックボックスのチェックを...
-
背景色を変えて未入力チェック...
-
フォームのチェックボックスの...
-
EclipseでSpringを使用し、テー...
-
ラジオボタンの選択でチェック...
-
Objective-Cでチェックボックス...
-
JSP内で可変するチェックボック...
-
複数のチェックボックス項目が...
-
チェックボックスで指定したも...
-
return trueとreturn falseの用...
-
ハイパーリンクを別ウインドウ...
-
テーブルにおける行(セルにプル...
-
フォームのメニューリストを外...
-
プルダウンで選択された値を別...
-
onchangeイベントを強制的に発...
-
<JavaScript>tableタグを入力不...
-
特定<table>内の<td>の色を変える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスのON/OFFでVal...
-
チェックボックスの設定
-
【jsp/Java】チェックボックス...
-
チェックボックスで指定したも...
-
背景色を変えて未入力チェック...
-
JSP内で可変するチェックボック...
-
確認ページからフォームページ...
-
配列のチェックボックスをjavas...
-
チェックボックスのグループ化...
-
JavaScriptからの戻り値
-
チェックボックスのON/OFFに応...
-
contact-form7のプラグインでチ...
-
スクリプト内でチェックボック...
-
プルダウンメニューから特定曜...
-
チェックボックスを使って条件検索
-
チェックボックスとラジオボタ...
-
if文でelseを使わずに否定
-
checkboxをクリックしてリロー...
-
チェックボックスで合計値を計...
-
<input type="checkbox" checke...
おすすめ情報