jquery table 編集

jQuery Table 表格編集:データの追加・削除・変更・検索を簡単に実現

1. はじめに

- ウェブ開発において、表はデータの表示と管理によく使用されます。

- 従来の HTML テーブルは、柔軟な編集機能が不足しています。

- jQuery は、テーブルデータの動的な操作を簡単に実現するための強力なツールを提供します。

2. jQuery Table 編集プラグイン

- 一般的な jQuery Table 編集プラグインを紹介します。

  • DataTables Editor: CRUD 操作、フォーム検証など、豊富な機能を備えた強力なプラグインです。
  • jEditable: 軽量なプラグインで、セルの編集を素早く実装できます。
  • Tabledit: 使いやすいプラグインで、直感的なインライン編集体験を提供します。

3. jQuery を使用したテーブル編集機能の実装

3.1. jQuery ライブラリの読み込み

まずは、HTMLファイルの<head>タグ内に以下のコードを追加し、jQueryライブラリを読み込みます。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

3.2. HTML テーブルの作成

次に、操作対象となるHTMLテーブルを作成します。

<table>
  <thead>
    <tr>
      <th>名前</th>
      <th>年齢</th>
      <th>操作</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>田中</td>
      <td>30</td>
      <td><button class="edit">編集</button> <button class="delete">削除</button></td>
    </tr>
  </tbody>
</table>

3.3. JavaScript コードの追加

以下のJavaScriptコードを記述し、テーブル操作機能を実装します。

$(document).ready(function() {
  // 3.3.1. 編集機能の実装
  $("table").on("click", ".edit", function() {
    // クリックされたボタンの親要素である`<tr>`を取得
    var row = $(this).closest("tr");
    // 各セルの値を取得
    var name = row.find("td:eq(0)").text();
    var age = row.find("td:eq(1)").text();
    // セルをテキストボックスに置き換え
    row.find("td:eq(0)").html('<input type="text" class="name" value="' + name + '">');
    row.find("td:eq(1)").html('<input type="text" class="age" value="' + age + '">');
    // ボタンを「保存」ボタンに置き換え
    $(this).hide().siblings(".delete").hide().parent().append('<button class="save">保存</button> <button class="cancel">キャンセル</button>');
  });

  // 編集内容保存
  $("table").on("click", ".save", function() {
    var row = $(this).closest("tr");
    var name = row.find(".name").val();
    var age = row.find(".age").val();
    row.find("td:eq(0)").text(name);
    row.find("td:eq(1)").text(age);
    $(this).siblings(".cancel").remove();
    $(this).siblings(".edit").show();
    $(this).siblings(".delete").show();
    $(this).remove();
  });

  // 編集キャンセル
  $("table").on("click", ".cancel", function() {
    var row = $(this).closest("tr");
    row.find("input").each(function() {
      var value = $(this).val();
      $(this).parent().text(value);
    });
    $(this).siblings(".save").remove();
    $(this).siblings(".edit").show();
    $(this).siblings(".delete").show();
    $(this).remove();
  });


  // 3.3.2. 削除機能の実装
  $("table").on("click", ".delete", function() {
    if (confirm("本当に削除しますか?")) {
      $(this).closest("tr").remove();
    }
  });

  // 3.3.3. 追加機能の実装
  $("#add").click(function() {
    var newRow =
      '<tr>' +
      '<td><input type="text" class="name"></td>' +
      '<td><input type="text" class="age"></td>' +
      '<td><button class="save">保存</button> <button class="cancel">キャンセル</button></td>' +
      '</tr>';
    $("table tbody").append(newRow);
  });

  // 追加内容保存
  $("table").on("click", ".save", function() {
    var row = $(this).closest("tr");
    var name = row.find(".name").val();
    var age = row.find(".age").val();
    if (name === "" || age === "") {
      alert("名前と年齢を入力してください");
      return;
    }
    row.find("td:eq(0)").text(name);
    row.find("td:eq(1)").text(age);
    row.find("td:eq(2)").html('<button class="edit">編集</button> <button class="delete">削除</button>');
  });

  // 追加キャンセル
  $("table").on("click", ".cancel", function() {
    $(this).closest("tr").remove();
  });
});

コード解説

  1. 編集機能:

    • .edit クラスを持つボタンがクリックされると、その行のセルがテキストボックスに置き換えられます。

    • 保存ボタンを押すと、変更がテーブルに反映されます。

    • キャンセルボタンを押すと、編集前の状態に戻ります。

  2. 削除機能.delete クラスを持つボタンをクリックすると、確認ダイアログの後、その行が削除されます。

  3. 追加機能:

    • "追加" ボタン (id="add") をクリックすると、新しい行と入力フィールドがテーブルに追加されます。

    • 保存ボタンを押すと、入力されたデータが新しい行としてテーブルに追加されます。

    • キャンセルボタンを押すと、入力は破棄され、新しい行は削除されます。

HTMLへの追加

HTMLに "追加" ボタンを追加します。

<button id="add">追加</button>

これで、jQueryを使って動的なテーブル操作機能を実装できました。

4. 高度な機能

  • Ajax データ連携: Ajax を使用してサーバーにデータを更新します。
  • フォーム検証: ユーザーが入力したデータが有効かどうかを確認します。
  • ページング: 大量のデータを処理します。
  • 並べ替えとフィルタリング: ユーザーがデータを見つけやすくします。

5. まとめ

- jQuery を使用すると、テーブル編集機能を簡単に実装し、ユーザーエクスペリエンスを向上させることができます。

- 適切なプラグインを選択すると、開発プロセスを簡素化できます。

- 実際のニーズに合わせて、適切な編集方法と機能を選択してください。

jQuery Table 編集に関するQ&A

Q1: jQuery Table 編集プラグインは、どのような基準で選べばよいですか?

A1: プロジェクトの規模、必要な機能、使いやすさなどを考慮して選択します。DataTables Editor は高機能ですが、jEditable や Tabledit は軽量で導入しやすいです。

Q2: 編集したデータをサーバーに保存するにはどうすればよいですか?

A2: Ajax を使用して、サーバーサイドのプログラムにデータを送信します。サーバーサイドでは、データベースにデータを保存する処理などを行います。

Q3: セキュリティ対策はどのようにすればよいですか?

A3: フォーム検証、入力データのサニタイズ、クロスサイトスクリプティング(XSS)対策など、一般的なウェブアプリケーションのセキュリティ対策が必要です。