jQueryによるフォームテーブル行の追加・削除

業務系のシステムではテーブル表示というものが多く見られます。

こんな感じ

名前 メールアドレス 期限

で、追加ボタンをクリックしたら入力行を増やして欲しいなんて要求もあります。
今回はそんな要求に答える処理を行ってみましょう

 

行の追加1

テーブルの最終行を複製して追加してみます。

複製には clone メソッドを使うのが便利です。

clone を使うとフォームに付与しているイベントなども複製してくれます。

サンプル

名前 メールアドレス 期限

html

jQuery

かなりシンプルですが、これだけで行は追加されます。

ただし、「最終行を複製して追加」というものなので、最終行に何らかの値が入っているとそのまま追加された行にも値が入ってますので、不要であれば下記のように値をクリアするという処理を入れてください。

 

行の追加2

行の追加1ではテーブルの最終行を複製して追加してみました。

最初から1行以上が必ず表示されている場合はいいのですが、1行も無い場合はどうすればいいでしょうか

こんな感じ

名前 メールアドレス 期限

複製しようにも複製元が存在しない

そんな場合は、複製元の行を非表示にしておいて複製後に表示させるという方法をとります。

サンプル

名前 メールアドレス 期限

html

最初の tr タグに style=”display: none;” を設定して非表示にしてこの行を複製元としています。

jQuery

 

行の削除

これも追加と同じく「削除」のボタンをクリックされたら削除するようにします

クリックされたら最初の行を削除する、最終行を削除するなどの手法もありますが、普通に考えて最も実用的なものは任意の行を削除できるというものでしょう

今回は、各行に存在する「削除」ボタンをクリックしたら、その行を削除するというものにします。

サンプル

名前 メールアドレス 期限

html

jQuery

 

まとめ

以前は「削除」ボタンがクリックされた時のイベントなどは画面が表示された時に存在していた削除ボタンに対しては動きましたが、「行追加」で追加された行の「削除」ボタンにはイベントが付与されておらず、手動でイベントを追加してあげる必要がありました。

画面の描画が終わった後に追加されたものに対してのイベントは追加してあげるという処理が必要だったのです。

clone メソッドによりイベントも追加してくれるようになったので、このような行追加が容易に行えるようになりました。