質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1867閲覧

JavaScriptを使わずチェックボックスを用いたボタンのクリック有効化、非有効化がしたい。

mouse_phone

総合スコア1

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/04/27 02:15

前提・実現したいこと

チェックボックスにチェックが入ると、ボタンが有効化される仕様にしたい。

前提:CMSを利用しているのですが、こちらにはJavaScriptを利用することはできず、CSSのみでチェックボックスを利用し
ボタンの有効化、非有効化を変更する必要があります。

発生している問題・エラーメッセージ

チェックボックスを有効化しても反応しない

該当のソースコード

html

1 2<p> 3<input type="checkbox" class="toggle"/> 4同意する 5</p> 6 <!--form_btn checkinput_btn 以下はソースは変更できない--> 7 <div class="form_btn checkinput_btn"> 8 <span class="global_btn"> 9 <button type="submit" class="btn_color_emp"> 10 <span class="button_head_space"></span> 11 <!--ここの確認ボタンをクリックの有効化、非有効化を設定する--> 12 <span class="button_text">確認画面へ</span> 13 <span class="button_end_space"></span> 14 </button> 15 </span> 16 </div> 17 18

CSS

1 2.btn_color_emp{ 3 pointer-events: none; 4} 5 6 7input:checked ~ .btn_color_emp{ 8 pointer-events: auto; 9} 10 11

試したこと

checkboxを追加し、チェックがOFFのときはpointer-events:none;で 確認画面へ をクリックできないようにしていき、
こちらにチェックが入った場合に、通常通りクリックできるように input:checkedでpointer-eventsを有効にしました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

もっと分かりやすい指定をすると良いかと思います。
例えば背景色

css

1.btn_color_emp{ 2 pointer-events: none; 3 background-color:#000; 4} 5 6 7input:checked ~ .btn_color_emp{ 8 pointer-events: auto; 9 background-color:#ccc; 10}

これで、チェックを入れたときに変化が起きているかどうか確認できます。
つまり、この指定では効いてないということになります。

あとは、「ではチェックボックス自体に効くのか?」というのも確かめてみます。

css

1input:checked{ 2 width:200px; 3 height:200px; 4} 5

となると指定の仕方であることが分かると思います。
今回関係するのは「~」ですね。

こういうときにドキュメントを確認します。

MDN:CSS: カスケーディングスタイルシート > 一般兄弟結合子

右側のセレクタで選択される要素のうち、次の条件をともにみたすものを選択します。
右側のセレクタで選択される要素が、左側のセレクタで選択される要素より後に表れることです。(直後である必要はありません)
もうひとつが、これらの要素が同じ親要素(要素)をもつことです。

今のHTML構造だとinputの親はpでbuttonの親はspanです。

家系図で言うと、inputの親の兄弟の孫がbuttonなので、連結しようがない、ということになります。
HTMLの構造変えるか、JavaScriptをなんとか使うしかないのではないでしょうか。

投稿2020/04/27 02:28

編集2020/04/27 02:35
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mouse_phone

2020/04/27 04:29

セレクタの使い方が難しいと感じる部分が多いので、セレクタについて勉強してみようかと思います。 ありがとうございました。
m.ts10806

2020/04/27 04:51

問題切り分けをしっかりやっていけば良いかと思います。
guest

0

ベストアンサー

構造に対する参照方法が正しくありません

投稿2020/04/27 02:22

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/04/27 02:23

<style> .btn_color_emp{ pointer-events: none; } input:checked ~ * .btn_color_emp{ pointer-events: initial; } </style> <input type="checkbox" class="toggle" id="agree"> <label for="agree">同意する</label> <div class="form_btn checkinput_btn"> <span class="global_btn"> <button type="submit" class="btn_color_emp"> <span class="button_head_space"></span> <span class="button_text">確認画面へ</span> <span class="button_end_space"></span> </button> </span> </div>
yambejp

2020/04/27 02:25

チェックボックスに対してpをかぶせてしまうと、兄弟要素ではなくなってしまうので あくまでも兄弟になるようにきちんと構造を設定すること
mouse_phone

2020/04/27 04:28

無事動作させることができました。ありがとうございます。 要素の位置づけの部分を意識して記載してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問