Автозаполнение пользовательского интерфейса jQuery: поиск не только «метки» в локальном массиве json - PullRequest
10 голосов
/ 17 января 2011

* История:

У меня есть сайт с двумя полосами поиска, где пользователи могут искать школу, а затем класс в этой школе с помощью автозаполнения jQuery.Все мои данные находятся в ЛОКАЛЬНОМ массиве json, например:

var schools = [{"label": Бостонский университет, "value": Бостонский университет, "ник": BU}]

* Проблема:

При поиске я хочу сопоставить ввод пользователя не только с «ярлыком», но и с «псевдонимом», чтобы в школе можно было искать как по «Бостонскому университету», так и по «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 Ответ

22 голосов
/ 18 января 2011

Вы можете сделать это, указав 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...