Вот как я это сделал, используя jQueryUI
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
$("input[name='categoriesAsText']").autocomplete({
source: function(request, response) {
$.getJSON(URLS.search_admin_categories, {
term: extractLast(request.term)
}, response);
},
select: function(event, ui) {
var terms = split(this.value);
terms.pop();
terms.push(ui.item.value);
terms.push("");
this.value = terms.join(", ");
return false;
},
focus: function() {
return false;
},
search: function() {
var term = extractLast(this.value);
if (term.length < 2) {
return false;
}
}
});
Вот код на стороне сервера для выполнения поиска.Это в Grails, но вы должны быть в состоянии создать его на выбранном вами серверном языке:
def search = {
withFormat {
json {
def categories = Category.createCriteria().list() {
ilike('name', "${params.term}%")
}
categories = categories.collect {
[id: it.id, label: it.name, value: it.name]
}
render categories as JSON
}
}
}