Подтвердить что ты не робот

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 для удаленных данных для достижения этого результата, но мне нужно использовать локальный массив для ускорения поиска, потому что у меня есть много классов в каждой школе.

Поскольку я - код новичка, и стек теперь полностью функциональный, быстрое исправление будет идеальным. Спасибо всем за вашу помощь!

4b9b3361

Ответ 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/