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

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

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

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

26536閲覧

jqueryでチェックボックスが全てチェックされているか判定

SKSG

総合スコア19

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

4クリップ

投稿2015/06/09 13:25

foreachなどで動的に要素数が変化する項目一覧の頭に付いたチェックボックスに、
全てチェックが付いていれば、アラートを出すという処理を作っているのですが、
全部がチェックされているか判定する方法が上手くいかず困っています。

例:動的に6つチェックボックスが生成された例

<input type="checkbox" id="check1" name="checksample" value="1"> <label for="check1">チェックボックス1</label> <input type="checkbox" id="check2" name="checksample" value="2"> <label for="check2">チェックボックス2</label> <input type="checkbox" id="check3" name="checksample" value="3"> <label for="check3">チェックボックス3</label> <input type="checkbox" id="check4" name="checksample" value="4"> <label for="check4">チェックボックス4</label> <input type="checkbox" id="check5" name="checksample" value="5"> <label for="check5">チェックボックス5</label> <input type="checkbox" id="check6" name="checksample" value="6"> <label for="check6">チェックボックス6</label>

この場合は6つ存在するチェックボックスが全てチェックされていればアラートを出す、
というような判定方法てどのようすれば宜しいでしょうか。ご意見頂けると幸いです。

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

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

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

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

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

guest

回答2

0

こんにちは。

「すべてのチェックボックスがチェックされている。」
ということは、
「チェックされていないチェックボックスの個数が0」
と同じであるという考え方で、以下

lang

1$("input[type=checkbox]:not(:checked)").size() == 0

を判定に使うのはいかがでしょうか。以下、例になります。

lang

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>11021</title> 6<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 7<script> 8$(function() { 9 $('#checkBtn').click(function(){ 10 if ( $("input[type=checkbox]:not(:checked)").size() == 0 ) { 11 alert("はい。すべてチェックされています。"); 12 } 13 }); 14} ); 15</script> 16</head> 17<body> 18<input type="checkbox" id="check1" name="checksample" value="1"> 19<label for="check1">チェックボックス1</label><br /> 20<input type="checkbox" id="check2" name="checksample" value="2"> 21<label for="check2">チェックボックス2</label><br /> 22<input type="checkbox" id="check3" name="checksample" value="3"> 23<label for="check3">チェックボックス3</label> <br /> 24<input type="checkbox" id="check4" name="checksample" value="4"> 25<label for="check4">チェックボックス4</label><br /> 26<input type="checkbox" id="check5" name="checksample" value="5"> 27<label for="check5">チェックボックス5</label><br /> 28<input type="checkbox" id="check6" name="checksample" value="6"> 29<label for="check6">チェックボックス6</label><br /> 30<hr /> 31<input type="button" id="checkBtn" value="すべてチェックされていますか?" /> 32</body> 33</html>

[すべてチェックされていますか?]のボタンをクリックしたときに、すべてが
チェックされていれば、「はい。すべてチェックされています。」のアラート
を表示します。

以上、ご参考になれば幸いです。

投稿2015/06/09 14:25

jun68ykt

総合スコア9058

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

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

SKSG

2015/06/10 13:43

> ykt68さん 御回答、有り難う御座いました。 色んな方から頂く意見や回答で、そういう解き方・考え方・アプローチもあるんだ、 といつも感心させられて発想が足りないと感じさせられます。 もっと考えれるよう頑張ります。
guest

0

ベストアンサー

jQueryを使えるのでしたら次のように書くことができます。

lang

1$(function() { 2 var checkbox_selector = "input[type=checkbox]"; 3 4 $("body").delegate(checkbox_selector, "click", function() { 5 var length, checked_length; 6 7 length = $(checkbox_selector).length; 8 checked_length = $(checkbox_selector + ":checked").length; 9 10 if (length === checked_length) { 11 alert("すべてがチェックされています"); 12 } 13 }); 14});

delegateメソッドは、動的に変化する要素にイベントを付加できる魔法のようなメソッドです。
このメソッドを使うことで、たとえここからチェックボックスが増えても正しく動作します。

投稿2015/06/09 13:48

編集2015/06/09 13:56
anaprestoo

総合スコア199

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

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

orange0190

2015/06/10 00:29

横から失礼。 最近のjQueryなら私はon()の方がいいと思ってます。
anaprestoo

2015/06/10 08:34

jQueryの公式ドキュメントを見ると、確かにそのようなことが書かれていますね。 As of jQuery 1.7, .delegate() has been superseded by the .on() method. (http://api.jquery.com/delegate/) これからは.delegate()の代わりに.on()を使うことにします。 ご指摘ありがとうございました。
SKSG

2015/06/10 13:40

>anaprestooさん >ShunsukeIzuiさん 御回答有り難う御座います。 お陰様で良い感じで実装することが出来ました! また何かありましたらよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問