JQuery UI Autocomplete: поиск больше, чем просто "метка" в локальном массиве json
* История:
У меня есть сайт с 2 барами поиска, где пользователи могут искать школу, а затем класс в этой школе через автозаполнение jQuery. Все мои данные находятся в LOCAL json массиве, например:
var schools = [{ "label": Boston University, "value": Boston University, "nickname": BU}]
* Проблема:
При поиске я хочу, чтобы пользовательский ввод соответствовал не только "метке", но и "прозвищу", чтобы школа была доступна для поиска как "Бостонским университетом", так и "БУ". Вот мой код сейчас:
$(document).ready(function(){
$("#school").autocomplete({
appendTo: ".custom-autocomplete",
source: schools,
minLength: 0,
select: function( event, ui ) {
$("#class").autocomplete({
appendTo: ".custom-autocomplete",
source: courses,
minLength: 2,
select: function( event, ui ) {
$('#submit_header_form').attr('class','submit_header_form');
}
});
});
});
Я знаю, что мы можем использовать PHP для удаленных данных для достижения этого результата, но мне нужно использовать локальный массив для ускорения поиска, потому что у меня есть много классов в каждой школе.
Поскольку я - код новичка, и стек теперь полностью функциональный, быстрое исправление будет идеальным. Спасибо всем за вашу помощь!
Ответы
Ответ 1
Вы можете сделать это, поставив source
в качестве обратного вызова. Существует пример на веб-сайте jQuery UI, но вы можете просто изменить стандартную реализацию.
source: function (request, response) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(schools, function(value) {
return matcher.test(value.value)
|| matcher.test(value.nickname);
}));
}
Здесь сценарий: http://jsfiddle.net/h5E6C/