HTMLのセレクトボックスに機能を追加してリッチにしてくれる”select2“というライブラリがあります。
使い勝手がそこそこいいので、自分も一部のWebアプリで使っていたりします。
具体的にselect2を使うとどうなるかというと
![](https://i0.wp.com/cpoint-lab.co.jp/wp-content/uploads/2019/01/2019-01-23.png?fit=1024%2C291&ssl=1)
こんな風に、セレクトボックスの選択肢に書式を適用したりできます。
さらに上に見ているテキストボックスですが、
![](https://i1.wp.com/cpoint-lab.co.jp/wp-content/uploads/2019/01/2019-01-23-1.png?fit=1024%2C226&ssl=1)
文字を入力するとリアルタイムに選択肢をフィルタしてくれます!
勿論、multipleなセレクトボックスにも対応しています。
![](https://cpoint-lab.co.jp/wp-content/uploads/2019/01/2019-01-23-2-1024x292.png)
![](https://cpoint-lab.co.jp/wp-content/uploads/2019/01/2019-01-23-3-1024x170.png)
これだけでも素晴らしいのですが、折角入力欄があるのでセレクトボックスにない新しい項目も追加できたらいいなぁとふと思ってしまったのですが、調べたところ…
Dynamic option creation – SELECT2
その機能もSelect2に入ってました\(^q^)/
どうやるかというと、
Select2は
$("セレクトボックスのセレクタ").select2();
のように指定することで有効化するのですが、
$("セレクトボックスのセレクタ").select2({
tags: true
});
という風に引数にオプションを追加すると
![](https://cpoint-lab.co.jp/wp-content/uploads/2019/01/2019-01-23-6-1024x228.png)
![](https://cpoint-lab.co.jp/wp-content/uploads/2019/01/2019-01-23-4-1024x170.png)
![](https://cpoint-lab.co.jp/wp-content/uploads/2019/01/2019-01-23-5-1024x264.png)
入力欄に入力した項目が一覧になかった場合でも、検索ボックスに追加することができます!
この場合、どうなるかというと、select2()をかけた要素のセレクトボックスのvalueの値に、入力した文字がそのまま反映されるので、通常の値の処理と同様に扱うことができます。
ただし、表示上の値とvalueの値を別のものにしているプログラムの場合は、新しく追加された値だけ表示上もvalueの値も入力されたものになりますので注意が必要です。
多機能なセレクトボックスを実装したい方は是非参考にしてみてください。