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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

Q&A

解決済

1回答

323閲覧

チェックボックスを持つリストで、リストをクリックしてもチェックが入るようにしたい。

kazu5942

総合スコア6

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

0グッド

0クリップ

投稿2020/09/17 07:52

編集2020/09/17 08:32

前提・実現したいこと

チェックボックスを含むリスト表をつくっているのですが、リスト(セル)をクリックしてもチェックボックスにチェックが入るようにしたいのですが、現状リストをクリックでチェックがはいるようにはなったのですが、チェックボックスそのものを押したときにチェックが入らなくなってしまいます。チェックを押してもリストを押してもチェックが入るようにしたいです。
ご教授よろしくお願いいたします。

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

チェックを押すと、チェックボックスにチェックが入らない

該当のHTML

<div class="col-md-6 offset-md-3"> <div class="card" style="margin:50px 0"> <div class="card-header">☑チェック項目</div> <ul class="list-group list-group-flush"> <li class="list-group-item"> 窓施錠 <label class="checkbox"> <input type="checkbox" id="check" /> <span class="danger"></span> </label> </li> <li class="list-group-item"> 消灯 <label class="checkbox"> <input type="checkbox" /> <span class="danger"></span> </label> </li> <li class="list-group-item"> エアコン <label class="checkbox"> <input type="checkbox" /> <span class="danger"></span> </label> </li> <li class="list-group-item"> セコム起動 <label class="checkbox"> <input type="checkbox" /> <span class="danger"></span> </label> </li> <li class="list-group-item"> セコム起動 <label class="checkbox"> <input type="checkbox" /> <span class="danger"></span> </label> </li> <li class="list-group-item"> エアコン <label class="checkbox"> <input type="checkbox" /> <span class="danger"></span> </label> </li> </ul> </div> </div> </li>

該当のJavaScript

$(document).ready(function() { $('li').click(function(event) { if (event.target.type !== 'checkbox') { $(':checkbox', this).trigger('click'); } }); });
@keyframes check {0% {height: 0;width: 0;} 25% {height: 0;width: 10px;} 50% {height: 20px;width: 10px;} } .checkbox{background-color:#fff;display:inline-block;height:28px;margin:0 .25em;width:28px;border-radius:4px;border:1px solid #ccc;float:right} .checkbox span{display:block;height:28px;position:relative;width:28px;padding:0} .checkbox span:after{-moz-transform:scaleX(-1) rotate(135deg);-ms-transform:scaleX(-1) rotate(135deg);-webkit-transform:scaleX(-1) rotate(135deg);transform:scaleX(-1) rotate(135deg);-moz-transform-origin:left top;-ms-transform-origin:left top;-webkit-transform-origin:left top;transform-origin:left top;border-right:4px solid #fff;border-top:4px solid #fff;content:'';display:block;height:20px;left:3px;position:absolute;top:15px;width:10px} .checkbox span:hover:after{border-color:#999} .checkbox input{display:none} .checkbox input:checked + span:after{-webkit-animation:check .8s;-moz-animation:check .8s;-o-animation:check .8s;animation:check .8s;border-color:#555} .checkbox input:checked + .default:after{border-color:#444} .checkbox input:checked + .primary:after{border-color:#2196F3} .checkbox input:checked + .success:after{border-color:#8bc34a} .checkbox input:checked + .info:after{border-color:#3de0f5} .checkbox input:checked + .warning:after{border-color:#FFC107} .checkbox input:checked + .danger:after{border-color:#f44336}

試したこと

原因がチェックボックスを押すと、二重で処理が走っていると考え、if (event.target.type !== 'checkbox') でチェックボックスが押された場合は処理を行わないようにしたのですがうまく動きません。
何卒宜しくお願い致します。

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

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

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

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

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

m.ts10806

2020/09/17 07:58

htmlがぐちゃっとなってるのでコードフォーマット(適切なインデント)調整してください。 あと、bootstrapでしょうか? バージョンも記載してください
kazu5942

2020/09/17 08:34

ご回答いただきまして誠にありがとうございます。対応させていただきました。また、Bootstrap4です。 一旦cssの適用をなくしたところ、うまく動作したので、その当たりが原因だと考えたのですが、どの部分が悪さをしているのかわかりませんでした。cssのコードも追加しておきます。
guest

回答1

0

ベストアンサー

パターン1 <label>タグのみで解決する
※文法上よくないのでおすすめできません

HTML

1 <!-- liの外にlabelを指定 --> 2 <label for="check1"> 3 <li class="list-group-item"> 4 窓施錠 5 <input type="checkbox" id="check1" /> 6 <span class="danger"></span> 7 </li> 8 </label>

パターン2 <li>タグのイベントで処理

JavaScript

1 $(function(){ 2 $('li').click(function(){ 3 var c = $(this).find("input:checkbox"); 4 c.prop('checked', !c.prop("checked")); 5 }); 6 });

どちらでも動きます。

HTML

1 <!-- 文字列を含みlabelを指定 --> 2 <li class="list-group-item"> 3 <label for="check2"> 4 消灯 5 <input type="checkbox" id="check2" /> 6 <span class="danger"></span> 7 </label> 8 </li> 9 <!-- 文字列を含まずlabelを指定 (こちらで書かれていた意味は?)--> 10 <li class="list-group-item"> 11 エアコン 12 <label class="checkbox"> 13 <input type="checkbox" /> 14 <span class="danger"></span> 15 </label> 16 </li>

投稿2020/09/17 15:06

kuma_kuma_

総合スコア2506

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

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

kazu5942

2020/09/18 00:25

<li>タグのイベントで処理で解決することができました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問