コードの構造が非常に異なるため、デモのコンボボックスコードに含まれるオートコンプリートで機能する方法ではありません。
任意の単語のどこかにすべての検索トークンを持つすべてのアイテムを一致させたいと考えています。単語の先頭を一致させる必要はありません。どの部分でもかまいません。検索文字列がオートコンプリート リストで強調表示されていても、それが複雑すぎる場合は気にしません。
希望する検索/結果の組み合わせ: (スペースを空けてください)
" fi th " " first second th ird"
" rs on " " first t sec on d third"
" ec rd " "first second third "
ですが、そうではありませんトークンの最大/最小長または数に制限されます。
編集
私が作業していた他のオートコレクトのコード構造を使用して、その一部を理解しました。
source: function( requestObj, responseFunc ) {
var matchArry = $("select > option").map(function(){return this.innerHTML;}).get();
var srchTerms = $.trim(requestObj.term).split(/\s+/);
// For each search term, remove non-matches
$.each (srchTerms, function (J, term) {
var regX = new RegExp (term, "i");
matchArry = $.map (matchArry, function (item) {
if( regX.test(item) ){
return{
label: item,
value: item,
option: HTMLOptionElement
} ? item :null;
}
} );
});
// Return the match results
responseFunc (matchArry);
},
と
select: function( event, ui ) {
ui.item.option.selected = true;
self._trigger( "selected", event, {
item: ui.item.option
});
$("destination").val(ui.item.value); // I added this line
},
しかし、複数の単語を同時に取得できず、同時にクリックして選択することもできません。
マップ機能で返品時に を削除する} ? item :null;
と、クリックしてアイテムを選択できます。そのままにしておくと、複数の単語を入力できますが、どの項目もクリックできません...
それは問題option: this
ですか?私はそれをHTMLOptionElement
andに置き換えようとしましたが、null
行き詰まりました。
選択ラベル内で別のフィールドの値を設定できui.item.value
ますが、検索ボックスに値を入力したり、ドロップダウン メニューを閉じたりすることはできません。