[jQuery] Select2ライブラリ – 選択だけではなく、入力もできるようにする
Select2ライブラリは非常に強力で簡単です。
私たちは、Select2ライブラリを利用して、セレクトボックスとhidden inputをSelect2 UIにすることができる。ところがセレクトボックス形式でUIを使用する場合は、新しい入力をするようにすることが基本的に提供されない。もちろん、tag機能を利用すれば簡単に実現することができる。しかし、tag機能を利用すると、UIがtag形で出てくる。セレクトボックス形式のUIが必要なときは使用できない方法である。
したがって、以下の説明は、tag機能を利用せずに、セレクトボックス形式のUIで新しい入力を可能にする方法である。
これ作ることができる。

HTML
<input type="hidden" name="email_server"
data-list='[{"id":"hanmail.net","text":"hanmail.net"}, {"id":"gmail.com","text":"gmail.com"}, {"id":"naver.com","text":"naver.com"}, {"id":"hotmail.com","text":"hotmail.com"}]'
data-default-value='{"id":"left21.com","text":"left21.com"}'
id="email_server" class="select2-input">
JS
// 選択するだけでなく、入力もできるselect2。 input[hidden]でなければ、data-liat要素がなければならない。
// default値を指定したい場合、data-default-valueを要素に入れてくれれば良い。
$("input.select2-input").each(function(){
try{
var $this = $(this);
var list = $this.data('list');
var default_value = $this.data('default-value');
var option = {
data: list,
createSearchChoice: function (term){
return {id: term, text: term};
},
initSelection: function (element, callback) {
callback(default_value);
}
};
$this.select2(option);
// デフォルト値がある場合は設定します。
if(default_value){
$this.select2('val', default_value);
}
}catch(e){
}
});
try、catch構文はquery function not defined for Select2 undefinedというエラーメッセージがFirefoxで出てきてjsの動作が停止されることから取り込んだのだ。
- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。