jQuery UI v1.8rc3 では、オートコンプリート ウィジェットは、文字列、配列、またはコールバック関数のいずれかであるソースオプションを受け入れます。文字列の場合、オートコンプリートはその URL で GET を実行してオプション/提案を取得します。配列の場合、オートコンプリートは、指摘したように、配列の任意の位置に型指定された文字が存在するかどうかを検索します。最後のバリアントは、あなたが望むものです - コールバック関数です。
オートコンプリートのドキュメントから:
3 番目のバリエーションであるコールバックは、最も柔軟性が高く、任意のデータ ソースをオートコンプリートに接続するために使用できます。コールバックは 2 つの引数を取得します。
•request
テキスト入力の現在の値を参照する「term」という単一のプロパティを持つオブジェクト。たとえば、オートコンプリートを行うように設定されている都市フィールドにユーザーが「new yo」と入力すると、 はrequest.term
「new yo」を保持します。
•response
ユーザーに提案するデータが 1 つの引数に含まれていることを期待するコールバックである関数。このデータは、提供された用語に基づいてフィルタリングする必要があり、単純なローカル データに許可されている形式の配列である必要があります: ラベル/値/両方のプロパティを持つ文字列配列またはオブジェクト配列。
コード例:
var wordlist= [ "about", "above", "across", "after", "against",
"along", "among", "around", "at", "before",
"behind", "below", "beneath", "beside", "between",
"beyond", "but", "by", "despite", "down", "during",
"except", "for", "from", "in", "inside", "into",
"like", "near", "of", "off", "on", "onto", "out",
"outside", "over", "past", "since", "through",
"throughout", "till", "to", "toward", "under",
"underneath", "until", "up", "upon", "with",
"within", "without"] ;
$("#input1").autocomplete({
// The source option can be an array of terms. In this case, if
// the typed characters appear in any position in a term, then the
// term is included in the autocomplete list.
// The source option can also be a function that performs the search,
// and calls a response function with the matched entries.
source: function(req, responseFn) {
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp( "^" + re, "i" );
var a = $.grep( wordlist, function(item,index){
return matcher.test(item);
});
responseFn( a );
}
});
いくつかの重要なポイント:
$.ui.autocomplete.escapeRegex(req.term);
Thatの呼び出しは検索用語をエスケープするため、ユーザーが入力したテキスト内の正規表現を意味する用語はプレーン テキストとして扱われます。たとえば、ドット (.) は正規表現にとって意味があります。オートコンプリートのソース コードを読んで、この escapeRegex 関数を知りました。
- の行
new Regexp()
。^ (サーカムフレックス) で始まる正規表現を指定します。これは、入力された文字が配列内の用語の先頭にある場合にのみ一致することを意味します。また、大文字と小文字を区別しない一致を意味する "i" オプションも使用します。
- ユーティリティは
$.grep()
、提供された配列の各項に対して提供された関数を呼び出すだけです。この場合の関数は、単純に正規表現を使用して、配列内の項が入力されたものと一致するかどうかを確認します。
- 最後に、responseFn() が検索結果で呼び出されます。
実際のデモ: http://jsbin.com/ezifi
それはどのようなものか:

注意: この時点では、オートコンプリートに関するドキュメントはかなり未熟であることがわかりました。これを行う例が見つかりませんでした。また、どの .css ファイルが必要か、またはどの .css クラスが使用されるかについての作業ドキュメントも見つかりませんでした。コードを調べて、これらすべてを学びました。
また、オートコンプリート プラグインの結果をカスタム形式にするにはどうすればよいですか?も参照してください。