技術資料

チェックボックスでデータ更新を実現する仕組みと実装例

2024.11.27

以下のような何らかの情報の一覧画面があって、チェックボックスにチェックを入れる/外すだけで、サーバーサイドで情報の更新をする、というインターフェイスはよくあると思います。
この例だと、チェックを入れたユーザーの利用停止フラグをオンにする感じ。

ユーザー名 メールアドレス 最終ログイン時刻 利用停止
mochimochi_panda mochimochi.panda@example.com 2024-11-26 22:15:43
oshogatsu2024 kagami.mochi@example.com 2024-11-23 08:02:17
kaiju_luv godzilla.1954@example.com 2024-11-25 16:30:05
bishamonten shogi.yama@example.com 2024-11-27 10:11:03
bz_fever88 tak.matsumoto@example.com 2024-11-27 09:00:00

こういうのをできるだけ汎用性のある形で実装してみようと思います。

HTML側 - data属性で情報を付与する

HTML側では、input要素(checkbox)に、data属性で情報を付与しておきます。

<table>
    <tr>
        <th>ユーザー名</th>
        <th>メールアドレス</th>
        <th>最終ログイン時刻</th>
        <th>利用停止</th>
    </tr><tr>
        <td>mochimochi_panda</td>
        <td>mochimochi.panda@example.com</td>
        <td>2024-11-26 22:15:43</td>
        <td>
            <input type="checkbox" name="is_suspended" value="1"
            class="trigger-postcheckdata"
            data-posturl="https://mydomain/script/update_is_suspended/1">
        </td>
    </tr><tr>
        <td>oshogatsu2024</td>
        <td>kagami.mochi@example.com</td>
        <td>2024-11-23 08:02:17</td>
        <td>
            <input type="checkbox" name="is_suspended" value="1"
            class="trigger-postcheckdata"
            data-posturl="https://mydomain/script/update_is_suspended/2">
        </td>
    </tr><tr>
        <td>kaiju_luv</td>
        <td>godzilla.1954@example.com</td>
        <td>2024-11-25 16:30:05</td>
        <td>
            <input type="checkbox" name="is_suspended" value="1"
            class="trigger-postcheckdata"
            data-posturl="https://mydomain/script/update_is_suspended/3">
        </td>
    </tr><tr>
        <td>bishamonten</td>
        <td>shogi.yama@example.com</td>
        <td>2024-11-27 10:11:03</td>
        <td>
            <input type="checkbox" name="is_suspended" value="1"
            class="trigger-postcheckdata"
            data-posturl="https://mydomain/script/update_is_suspended/4">
        </td>
    </tr><tr>
        <td>bz_fever88</td>
        <td>tak.matsumoto@example.com</td>
        <td>2024-11-27 09:00:00</td>
        <td>
            <input type="checkbox" name="is_suspended" value="1"
            class="trigger-postcheckdata"
            data-posturl="https://mydomain/script/update_is_suspended/5">
        </td>
    </tr>
</table>

data-posturlに、チェックボックスがチェックされた/外された時に送信するサーバー側プログラムへのURLを指定しておきました。
今回の例だと、update_is_suspended という処理に各ユーザーのID番号を付与してURLとして指定しています。

また、各チェックボックスには、共通のクラスを指定しておきました(今回の例では trigger-postcheckdata というクラス名)。

JavaScript側 - チェックボックスの状態を見て値を付与

チェックボックスがチェックされた/外された時に起動するJavaScript側の処理は以下のような感じ(今回はjQueryを使います)。

// クラス「trigger-postcheckdata」の値が変更されたら起動
$(".trigger-postcheckdata").change(function(){
    // チェックボックスがオフなら「0」、オンなら「1」の値を設定
    let val = 0;
    if($(this).prop('checked')){
        val = $(this).val();
    }
    // data-posturlの値のURLに、チェックボックスの値を付与してPOST
    let post_url = $(this).data('posturl');
    post_url += '/' + val;
    $.ajax({
        url: post_url,
        type: 'POST',
        dataType: 'html',
        timeout: 5000,
    })
    .done(function(data) {
        // 成功時の処理
        console.log(data);
    })
    .fail(function(jqXHR, textStatus) {
        // 失敗時の処理
        console.log(textStatus);
        alert('Error: postcheckdata');
    });
});

上記のスクリプトで、以下のURLに対してPOSTされることになります。

チェックボックスオンの時
https://mydomain/script/update_is_suspended/[user_id]/1
チェックボックスオフの時
https://mydomain/script/update_is_suspended/[user_id]/0

サーバーサイドでは、このURLで受け取った値を元に、データを更新すればOK。

ダッシュボードのパフォーマンス改善:Ajaxとiframeの実践例

2024.12.11

サーバーサイドですべてを処理してから画面を出力するのではなく、データを分割して効率的に表示する手法をご紹介。Ajaxとiframe、それぞれの特徴や実装例をわかりやすく解説します。

HTML JavaScript jQuery

contenteditableで作るインライン編集システムとデータ送信の仕組み

2024.12.03

contenteditable属性を利用すれば、HTML内のテキストを直接編集できるインターフェースを構築できます。 本記事では、contenteditableを活用したインライン編集機能の実装手法について解説します。 UIの向上を目指す際の参考として。

CSS HTML JavaScript jQuery

セレクトボックスでデータ更新を実現する仕組みと実装例

2024.11.29

「チェックボックスを使ったデータ更新の仕組み」に続く記事として、今回はセレクトボックスを活用したデータ更新の方法をご紹介します。複数の選択肢から値を選び、それをサーバー側に送信して更新する仕組みを、実装例とともに解説します。

HTML JavaScript jQuery

datalistとJavaScriptで作るタグ入力フォームの実装ガイド

2024.11.17

ブログやアプリケーションで便利な「タグ入力フォーム」。この記事では、datalist要素を利用して、既存タグの選択と新規タグの追加を同時に実現するUIの作成方法をご紹介します。さらに、JavaScriptとCSSを活用して、複数選択対応やタグ削除機能、Enterキーでのタグ追加機能も実装。タグ入力フォームを効率的かつユーザーフレンドリーにカスタマイズする方法を詳しく解説します。

CSS HTML JavaScript jQuery

阿部辰也へのお仕事の依頼・お問い合わせ

お名前 *必須
会社名
メールアドレス *必須
電話番号
URL
お問い合わせのきっかけ
お問い合わせの内容 *必須
個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP