Просто отправьте введенный термин на сервер и выполните sql-оператор, подобный этому:
выберите имя из тега t левого внешнего соединения tagSyms s на s.tagID=t.tagID, где s.alias=$searchstring ИЛИ t.tagName=$searchstring
и вернуть данные в формате json. JSON-формат: { val: 'тэг' }
На сайте клиента:
var engine = new Bloodhound({
name: 'tags',
remote: 'http://example.com/tags?q=%QUERY',
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.val);
},
queryTokenizer: Bloodhound.tokenizers.whitespace
});
engine.initialize();
$("#inputField").typeahead(...);
Также взгляните на ключи displayKey и template в typeahead.js.
Когда вам нужен отсортированный список, все будет в порядке, если sql будет упорядочен.
Вы контролируете, что в поле предложений отображается с помощью шаблонов:
Например, если вы хотите также отобразить счетчик, просто отредактируйте JSON на { val: 'tagname', counter:x }, а тип впереди на:
.typeahead(
....,{
templates:{
suggestion:function(data){
return "<p>"+data.val+"(used: "+data.counter+" times)</p>";
}
},
source: engine.ttAdapter()
});
person
anstue
schedule
27.09.2014