JavaScript、jQuery、Ajaxで選択されたチェックボックスを配列に取得する3つの方法

2024-04-02

JavaScript、jQuery、Ajax を使って選択されたチェックボックスをすべて配列に取得する方法

前提条件

このチュートリアルを始める前に、以下のものが必要です。

  • HTML ファイル
  • JavaScript ファイル
  • (オプション) jQuery ライブラリ

HTML

まず、HTML ファイルにチェックボックスをいくつか用意します。

<input type="checkbox" name="checkboxes[]" value="1">
<input type="checkbox" name="checkboxes[]" value="2">
<input type="checkbox" name="checkboxes[]" value="3">

name 属性は同じにして、value 属性はそれぞれのチェックボックスに固有の値を設定します。

JavaScript

次に、JavaScript ファイルで選択されたチェックボックスを取得するコードを書きます。

純粋な JavaScript

const checkboxes = document.querySelectorAll('input[type="checkbox"][name="checkboxes[]"]:checked');
const selectedValues = Array.from(checkboxes).map(checkbox => checkbox.value);

console.log(selectedValues); // ["1", "2", "3"]

このコードは、以下の処理を行います。

  1. querySelectorAll を使って、name 属性が checkboxes[] で、type 属性が checkbox で、かつチェックされているすべてのチェックボックスを取得します。
  2. Array.from を使って、取得したチェックボックスのリストを配列に変換します。
  3. 配列内の各チェックボックスの value 属性を取得して、新しい配列に格納します。

jQuery

const $checkboxes = $('input[type="checkbox"][name="checkboxes[]"]:checked');
const selectedValues = $checkboxes.map(function() {
  return $(this).val();
}).get();

console.log(selectedValues); // ["1", "2", "3"]

このコードは、jQuery を使って同様の処理を行います。

  1. $('input[type="checkbox"][name="checkboxes[]"]:checked') を使って、チェックされているすべてのチェックボックスを選択します。
  2. map メソッドを使って、選択されたチェックボックスの各要素に対して val() メソッドを実行し、value 属性を取得します。
  3. get() メソッドを使って、jQuery オブジェクトを配列に変換します。

Ajax を使って、サーバーに選択されたチェックボックスの値を送信することもできます。

const $checkboxes = $('input[type="checkbox"][name="checkboxes[]"]:checked');
const selectedValues = $checkboxes.map(function() {
  return $(this).val();
}).get();

$.ajax({
  url: '/submit-checkboxes',
  method: 'POST',
  data: {
    checkboxes: selectedValues,
  },
});
  1. 上記と同じように、選択されたチェックボックスの値を取得します。
  2. $.ajax メソッドを使って、サーバーに POST リクエストを送信します。
  3. data オプションを使って、リクエストデータに checkboxes キーと選択された値の配列を渡します。

このチュートリアルでは、JavaScript、jQuery、Ajax を使って、HTML フォームから選択されたチェックボックスをすべて配列に取得する方法を説明しました。

これらの方法を参考に、ご自身のニーズに合ったコードを作成してください。

補足

  • このチュートリアルでは、チェックボックスの name 属性が checkboxes[] であることを前提としています。異なる名前を使用している場合は、コードを適宜変更する必要があります。
  • Ajax を使用する場合は、サーバー側で受け取ったデータ処理するコードも必要です。



HTML

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>サンプルコード</title>
</head>
<body>
  <h1>選択されたチェックボックスを取得</h1>
  <form>
    <input type="checkbox" name="checkboxes[]" value="1"> チェックボックス 1
    <input type="checkbox" name="checkboxes[]" value="2"> チェックボックス 2
    <input type="checkbox" name="checkboxes[]" value="3"> チェックボックス 3
    <br>
    <button type="button" id="get-selected-checkboxes">選択されたチェックボックスを取得</button>
  </form>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
      $('#get-selected-checkboxes').click(function() {
        // 純粋な JavaScript
        const checkboxes = document.querySelectorAll('input[type="checkbox"][name="checkboxes[]"]:checked');
        const selectedValues = Array.from(checkboxes).map(checkbox => checkbox.value);
        console.log(selectedValues); // ["1", "2", "3"]

        // jQuery
        const $checkboxes = $('input[type="checkbox"][name="checkboxes[]"]:checked');
        const selectedValues = $checkboxes.map(function() {
          return $(this).val();
        }).get();
        console.log(selectedValues); // ["1", "2", "3"]

        // Ajax
        $.ajax({
          url: '/submit-checkboxes',
          method: 'POST',
          data: {
            checkboxes: selectedValues,
          },
        });
      });
    });
  </script>
</body>
</html>
// 上記の HTML ファイルと同じ

サーバー側コードは、使用している言語やフレームワークによって異なります。

例:PHP

<?php

// POST リクエストを受け取る
$checkboxes = $_POST['checkboxes'];

// データベースに保存したり、他の処理を行う

例:Python (Flask)

from flask import Flask, request

app = Flask(__name__)

@app.route('/submit-checkboxes', methods=['POST'])
def submit_checkboxes():
  # POST リクエストを受け取る
  checkboxes = request.form.getlist('checkboxes')

  # データベースに保存したり、他の処理を行う

  return 'OK'

if __name__ == '__main__':
  app.run()

実行

  1. HTML ファイルをブラウザで開きます。
  2. チェックボックスをいくつか選択します。
  3. 選択されたチェックボックスを取得 ボタンをクリックします。
  4. コンソールを確認すると、選択されたチェックボックスの値が表示されます。

注意

上記のコードはサンプルです。ご自身の環境に合わせて変更する必要があります。




選択されたチェックボックスを取得する他の方法

for ループを使用する

const checkboxes = document.querySelectorAll('input[type="checkbox"][name="checkboxes[]"]');
const selectedValues = [];

for (const checkbox of checkboxes) {
  if (checkbox.checked) {
    selectedValues.push(checkbox.value);
  }
}

console.log(selectedValues); // ["1", "2", "3"]

このコードは、for ループを使ってすべてのチェックボックスをループ処理し、チェックされているチェックボックスの value 属性を取得します。

const selectedValues = Array.from(document.querySelectorAll('input[type="checkbox"][name="checkboxes[]"]:checked')).map(checkbox => checkbox.value);

console.log(selectedValues); // ["1", "2", "3"]

このコードは、querySelectorAll:checked 擬似クラスを使用して、チェックされているチェックボックスのみを取得し、map メソッドを使って value 属性を取得します。

filter メソッドを使用する

const checkboxes = document.querySelectorAll('input[type="checkbox"][name="checkboxes[]"]');
const selectedValues = checkboxes.filter(checkbox => checkbox.checked).map(checkbox => checkbox.value);

console.log(selectedValues); // ["1", "2", "3"]

ライブラリを使用する

jQuery などのライブラリを使用すると、より簡単に選択されたチェックボックスを取得することができます。

const $checkboxes = $('input[type="checkbox"][name="checkboxes[]"]:checked');
const selectedValues = $checkboxes.map(function() {
  return $(this).val();
}).get();

console.log(selectedValues); // ["1", "2", "3"]

javascript jquery ajax


【初心者向け】JavaScriptの変数名:命名規則と無効な文字を徹底解説!

変数名に使用できるのは、以下の文字です。英小文字 (a から z および A から Z)数字 (0 から 9)アンダーバー (_)ドル記号 ($)例:myVariable_myVar$total以下の文字は、変数名に使用できません。空白句読点(ピリオド、カンマ、セミコロンなど)...


【保存版】削除前に確認ダイアログを表示する方法3選!JavaScript & HTML & ライブラリ

必要なものHTMLファイルJavaScriptファイル手順HTMLで削除ボタンを作成する上記のコードは、deleteConfirm()というJavaScript関数が呼び出されるように、onclickイベントにdeleteConfirm()関数を割り当てた削除ボタンを作成します。...


【保存版】Webサイトのパフォーマンスを向上させるためのCSSトランジション無効化テクニック

Webページにおけるアニメーションや滑らかな動きを実現するために、CSS トランジションは重要な役割を果たします。しかし、特定の状況下では、一時的にこれらの効果を無効にする必要が生じる場合があります。本記事では、JavaScript、jQuery、CSSを用いて、CSS トランジション効果を一時的に無効にする最もクリーンな方法について解説します。...


React-Router 外部リンク:aタグ、useNavigate、Redirectの徹底比較

a タグの使用useNavigate フックRedirect コンポーネント各方法の利点と欠点、具体的なコード例、さらには高度なユースケースまで、分かりやすく説明します。最もシンプルで直接的な方法は、a タグの href 属性に URL を指定する方法です。...


React で Enter キーを押してフォームを送信:Material-UI TextField を活用した3つのアプローチ

onKeyDown イベントハンドラを使用するこの方法は、Enter キーが押されたときに onKeyDown イベントハンドラを呼び出し、TextField の値を取得します。useRef フックと onKeyPress イベントハンドラを使用する...