JavaScriptでチェックボックスの状態を確認する方法まとめ

JavaScriptでチェックボックスの状態を確認する方法まとめ

D
dongAuthor
2 min read

JavaScriptとjQueryを使ってチェックボックス(checkbox)の状態を確認する方法を紹介します。checked属性、イベントリスナー、prop()is()の使い方を例とともに説明します。

ウェブ開発においてユーザーとのインタラクションは非常に重要です。チェックボックスは、ユーザーの同意を得たり、複数のオプションから一つまたは複数を選択させたりと、シンプルながらも必須のユーザーインターフェース(UI)要素です。たとえば「利用規約に同意します」や「自動ログイン」といった機能はいずれもチェックボックスを通じて実装されます。

このようなチェックボックスの選択状況、すなわち“状態”を確認することは、ユーザーの入力を処理し、それに応じたロジックを実行するために必ず知っておくべき技術です。本記事では、JavaScriptとjQueryを使ってチェックボックスの状態を確認する様々な方法を、わかりやすく丁寧にお伝えします。この記事を最後まで読めば、どんな状況でも自信をもってチェックボックスの状態を扱えるようになるでしょう。

基本 HTML チェックボックス

まずは、最も基本的なHTMLチェックボックスのコードから見ていきましょう。チェックボックスを作るには <input>タグの type 属性を "checkbox" に設定すればOKです。

<label>
  <input type="checkbox" id="terms"> 利用規約に同意します。
</label>

ここで <label> タグは、チェックボックスの横にあるテキストをクリックしてもチェックボックスが選択されるようにし、ユーザーの利便性を高めています。id 属性は、後でJavaScriptからこの特定のチェックボックスにアクセスするために使用される固有の識別子です。

JavaScriptでチェックボックスの状態を確認する

次にJavaScriptを使ってチェックボックスの状態を確認する方法を見てみましょう。最も基本的な属性は、まさに checked です。

checked 属性を使う

checked 属性はチェックボックスの現在の状態を表すブーリアン(Boolean)値です。チェックボックスが選択されていれば true を、選択されていなければ false を返します。

以下は id が ‘my_checkbox’ のチェックボックスの状態を確認する簡単な例です。

<label>
 <input type='checkbox' id='my_checkbox' onclick='is_checked()'>
  チェックしてください
</label>

<p id='result'></p>
function is_checked() {
  // 1. idを使ってチェックボックス要素を取得します。
  const checkbox = document.getElementById('my_checkbox');

  // 2. checked属性で状態を確認します。
  const isChecked = checkbox.checked; // true または false

  // 3. 結果を画面に出力します。
  document.getElementById('result').innerText = `チェックボックスの状態: ${isChecked}`;
}

このコードでは、onclick イベントがチェックボックスをクリックするたびに is_checked() 関数を呼び出します。関数はチェックボックスの checked 属性の値を取得し、その結果を <p> タグに表示しています。とてもシンプルですよね。 :)

イベントリスナー(Event Listener)を使う

HTMLに onclick 属性を直接書く代わりに、JavaScriptで addEventListener を使う方がスッキリしていて推奨される方法です。特に change イベントを使うと、チェックボックスの状態が変更されるたびに特定の動作を実行できます。

// idが 'terms' のチェックボックス要素を取得します。
const checkbox = document.getElementById("terms");

// 'change' イベントが発生したときに実行される関数を登録します。
checkbox.addEventListener("change", function() {
  if (this.checked) {console.log("利用規約に同意されました!");
  } else {console.log("同意が取り消されました。");
  }
});

this.checked は、イベントが発生した要素(ここではチェックボックス)の checked 状態を指します。この方法を使えばHTMLとJavaScriptのコードを分離でき、コードの保守性が高まります。

複数のチェックボックスの状態を確認する

時には複数のチェックボックスのうちどれが選択されているかを確認する必要があります。例えば、ユーザーに色々な興味関心を複数選んでもらう場合などです。この時は document.querySelectorAll() を使って複数の要素を一度に取得できます。

<p>興味あるものを選んでください:</p>
<label><input type="checkbox" class="interest" value="coding"> コーディング</label>
<label><input type="checkbox" class="interest" value="music"> 音楽鑑賞</label>
<label><input type="checkbox" class="interest" value="exercise"> 運動</label>
<button onclick="showSelected()">選択完了</button>
function showSelected() {
  // classが 'interest' のすべてのチェックボックスを取得します。
  const checkboxes = document.querySelectorAll(".interest");
  const selectedInterests = [];

  // for...of ループを使って各チェックボックスを巡回します。
  for (const checkbox of checkboxes) {if (checkbox.checked) {  selectedInterests.push(checkbox.value);}
  }

  alert(`選択された興味: ${selectedInterests.join(', ')}`);
}

querySelectorAll(".interest")interest クラスを持つすべての要素を NodeList 形式で返します。そのあと for...of ループで各チェックボックスの checked 状態をチェックし、選択されているものだけ valueselectedInterests 配列に追加しています。

jQueryでチェックボックスの状態を確認する

jQueryを使えばDOM操作のコードをより簡潔に書くことができます。チェックボックスの状態確認も例外ではありません。

.prop() メソッドを使う

jQueryでは、要素の属性(property)値を取得または設定する際に .prop() メソッドを使います。checked のようなブーリアン属性を扱うときに特に有用です。

// idが 'checkboxId' のチェックボックスがチェックされているか確認
if ($("#checkboxId").prop("checked")) {
  console.log("チェックされました!");
} else {
  console.log("チェックされていません。");
}

// チェックボックスを強制的にチェック状態にする
$('#ckBox').prop('checked', true);

// チェックボックスを強制的にチェック解除する
$('#ckBox').prop('checked', false);

.is() メソッドを使う

.is() メソッドは、選択された要素が特定の条件に合致するかどうかを確認し、true または false を返します。:checked セレクターと一緒に使えば、チェックボックスの状態を非常に直感的に確認できます。

// idが 'ckBox' のチェックボックスがチェックされているか確認
if ($('#ckBox').is(':checked')) {
  console.log("チェックされています。");
} else {
  console.log("チェックされていません。");
}

個人的には可読性の観点から .is(':checked') を好む傾向があります。コードがまるで自然言語のように読めるからです。

複数のチェックボックスの状態を確認する(jQuery)

jQueryの .each() メソッドを使えば、複数のチェックボックスを簡単に巡回できます。

$(".checkboxClass").each(function() {
  if ($(this).is(":checked")) {console.log($(this).attr('id') + " は選択されました!");
  } else {console.log($(this).attr('id') + " は選択されていません。");
  }
});

$(this).each() ループ内で現在巡回中の要素を指します。

主な使用ケース

チェックボックスの状態確認は様々なシナリオで活用されます。

  • フォームのバリデーション:ユーザーが「利用規約同意」などの必須項目をチェックしたかどうかを確認し、チェックされていなければフォーム送信を防ぎます。
  • データのフィルタリング・ソート:ECサイトで「送料無料」「特価商品」などのフィルターをチェックボックスで提供し、選択された条件にマッチする商品だけを表示します。
  • 機能の有効化/無効化:「ダークモードを使用」「通知を受け取る」などの設定をチェックボックスで制御します。
  • 「すべて選択」機能:テーブルの全項目を一度に選択または解除する「すべて選択」チェックボックスを実装する際に使われます。

まとめ

これまで、JavaScriptとjQueryを用いてチェックボックスの状態を確認する方法を見てきました。肝心なのは checked 属性を理解し、それを if 条件文等と組み合わせて使うことです。

  • 純粋な JavaScriptelement.checked 属性を使います。
  • jQuery.prop('checked') または .is(':checked') を使います。
  • 複数項目querySelectorAll().each() を使って繰り返し処理します。
  • イベント処理change イベントを使って状態変更を検知します。

チェックボックスは小さいながらも強力なUI要素です。今日学んだ内容を活かし、ユーザーとスムーズにインタラクションできる動的なウェブページを作ってみてください。皆さんのプロジェクトにすぐに使える実践的なヒントになったなら幸いです。