jQuery UI AutoCompleteで入力補完の使い方

jquery autocomplete javascript

まだまだjQueryな筆者です。
入力フォームで、例えば登録している製品を選ぶ時、selectだと縦に長くなりすぎるけど、完全一致で検索も辛い・・・という100件程度の製品から選ぶにはjQuery UI AutoCompleteを使っています。

jquery オートコンプリート

文字列の部分検索的なことが出来るので結構重宝しています。

Autocomplete | jQuery UI
jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building h...
スポンサーリンク

1.大まかな流れ

入力補完するおおまかな流れは以下です

  1. ページ読み込み時に製品リストを取得
  2. それをautocompleteにセット
  3. 候補選択時の処理を書く

2. 準備

jquery, jquery UIを読み込んでおけばOK。

3. inputを用意し、$(function()で初期化する

初期化はいつでもいいですが、$(function()あたりで初期化しておけばOKかと。
自分の場合はここでDBから引っ張ってきてセットしています。

3.1 inputを用意


<input type="text" name="product" value="">

3.2 autocomplete初期化

javascriptでサクッと書きましょう。
下記でページ読み込み時にajax経由でdbからデータ取得し、autocomplete用に成型(label,valueをセット)。
ターゲットのinputにautocompleteをセットする。
sourceは配列d。
選択時(select)時に何かするならselect:に書けばOK。


$(function(){
//loadする
setTimeout(function(){
load_data();
},100);
};

// dbから製品リストを取得
function load_data()
{
let data = {
//何か渡すのがあれば渡す
};
//$.ajaxをまとめた自作関数
ajax_func('GET',url,data,af_success,af_failed);
}
function af_success(datalist)
{
let d = [];
for( let i=0; i<datalist.length; i++ ){
    let r = {'label': datalist[i]['name'], 'value':datalist[i]['id] };
    d.push(r);
  }
  // ここでautocompleteを初期化
  $('[name="product"]).autocomplete({
    source: d,
    select: function(event, u){
//     名前ラベルは勝手にinputにセットされる
//       let name = u['item']['label'];
       let id = u['item']['value'];
    }
  });
}
function af_failed(e)
{
}

3.3 実際はul,liが追加されている

Chromeなどで開発モード、ソースを見てみましょう。
ソース下部にulタグが出来ていると思います。ここにsourceで追加されたデータを元に、ターゲットのinputに文字が入力されると、liタグ追加がされ、表示する仕組みのようです。

jquery autocomplete

4. 参考リンク

Autocomplete Widget | jQuery UI API Documentation

コメント

タイトルとURLをコピーしました