文末ソースの通り (1) 分類グループ、(2) すいかグループ、(3) 色グループ
というフォーム類があります。
これを次のような法則性でdisable/enableを切り替えたいです。
(1) 初期値で、「すいかグループ」と「色グループ」はdisabled。
(2) 「果物」がONの間だけ「すいかグループ」がenable(初期値で「含む」をON)
ここで「色グループ」はまだdisabledのまま。
(3) 「除く」がONの時のみ、「色グループ」もenable。他の「含む」「のみ」を選択中、
「色グループ」は常にdisabled。
(4) 「色グループ」が一つ以上チェックされている間、「分類グループ」の
「肉」「魚」「穀物」「飲料」はdisabled。
「色グループ」がdisableである間、「肉」~「飲料」は常にenable。
昨日も類似質問nご教示いただき(解決済み)、
本件に応用を試みましたが、(4) でつまづきました。
よろしくお願い致します
<html>
<head></head>
<body>
<form>
■分類<br>
<input type="checkbox" name="category[]">果物
(■すいか
<input type="radio" name="suika" disabled checked>含む
<input type="radio" name="suika" disabled>除く
<input type="radio" name="suika" disabled>のみ)<br>
<input type="checkbox" name="category[]">肉<br>
<input type="checkbox" name="category[]">魚<br>
<input type="checkbox" name="category[]">穀物<br>
<input type="checkbox" name="category[]">飲料<br>
<br>■色<br>
<input type="checkbox" name="color[]" disabled>赤<br>
<input type="checkbox" name="color[]" disabled>黄<br>
<input type="checkbox" name="color[]" disabled>青<br>
<input type="checkbox" name="color[]" disabled>白<br>
</form>
</body>
</html>
No.1ベストアンサー
- 回答日時:
あまり複雑な条件はつけすぎるとろくなことがないです。
もう少し、トリガーと結果を調整した方がよいかも知れません。
この手の複数のオブジェクトの属性を調整する場合は
nameだとcgiなどへの影響もあるでしょから
以前申し上げたとおりclassで管理するとよいでしょう。
<html>
<head>
<script language="javascript">
function classDisable(f,cn,fl){
for (var i=0;i<f.elements.length;i++){
if(f.elements[i].className==cn){f.elements[i].disabled=fl}
}
}
function classCheck(f,cn){
for (var i=0;i<f.elements.length;i++){
if(f.elements[i].className==cn && f.elements[i].checked==true && f.elements[i].disabled==false){return true;}
}
return false;
}
</script>
</head>
<body>
<form>
■分類<br>
<input type="checkbox" name="category[]" onClick="classDisable(this.form,'suika',!this.checked);classDisable(this.form,'color',!(!this.form.suika[1].disabled && this.form.suika[1].checked));classDisable(this.form,'nofruit',classCheck(this.form,'color'));">果物
(■すいか
<input type="radio" name="suika" class="suika" disabled onClick="classDisable(this.form,'color',this.checked);classDisable(this.form,'nofruit',classCheck(this.form,'color'));" checked>含む
<input type="radio" name="suika" class="suika" disabled onClick="classDisable(this.form,'color',!this.checked);classDisable(this.form,'nofruit',classCheck(this.form,'color'));">除く
<input type="radio" name="suika" class="suika" disabled onClick="classDisable(this.form,'color',this.checked);classDisable(this.form,'nofruit',classCheck(this.form,'color'));">のみ)<br>
<input type="checkbox" name="category[]" class="nofruit">肉<br>
<input type="checkbox" name="category[]" class="nofruit">魚<br>
<input type="checkbox" name="category[]" class="nofruit">穀物<br>
<input type="checkbox" name="category[]" class="nofruit">飲料<br>
<br>■色<br>
<input type="checkbox" name="color[]" class="color" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">赤<br>
<input type="checkbox" name="color[]" class="color" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">黄<br>
<input type="checkbox" name="color[]" class="color" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">青<br>
<input type="checkbox" name="color[]" class="color" disabled onClick="classDisable(this.form,'nofruit',classCheck(this.form,this.className))">白<br>
</form>
</body>
</html>
yambejpさん、いつも厚かましい質問に
懇切丁寧にご教示くださいまして、
本当に感謝に耐えません。
わたしも、もう少しシンプルにならないものかと
考え抜いたのですが、一番分かりやすく間違い
ないのが質問の仕様かな・・と思いました。
おかげさまで、本当に助かりました。
重ねて御礼申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
背景色を変えて未入力チェック...
-
チェックボックスを使って条件検索
-
チェックボックスのON/OFFでVal...
-
フォームのチェックボックスの...
-
<input type="checkbox" checke...
-
確認ページからフォームページ...
-
チェックボックスに連動するテ...
-
チェックボックスのON/OFFに応...
-
チェックボックスの設定
-
JavaScriptからの戻り値
-
【jsp/Java】チェックボックス...
-
チェックボックスとラジオボタ...
-
Javascript ポップアップウィ...
-
JavaScriptの「.querySelectorA...
-
ボタンを押すとチェックボック...
-
ボタンをクリックして文字を置...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
【jQuery】input nameの文字列...
-
ラジオボタンのチェックが外れ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスのON/OFFでVal...
-
【jsp/Java】チェックボックス...
-
チェックボックスで指定したも...
-
JSP内で可変するチェックボック...
-
チェックボックスのON/OFFに応...
-
特定のID(またはクラス)で括ら...
-
チェックが入っていなかったら...
-
複数あるチェックボックスから...
-
チェックボックスに全てチェッ...
-
背景色を変えて未入力チェック...
-
プルダウンメニューから特定曜...
-
スクリプト内でチェックボック...
-
チェックボックスの設定
-
AJAXで生成したHTMLでのチェッ...
-
javascriptで確認ダイアログの...
-
EclipseでSpringを使用し、テー...
-
確認ページからフォームページ...
-
一つのチェックボックスのON/OF...
-
jquery 診断コンテンツにチェッ...
-
オフになっているチェックボッ...
おすすめ情報