JQuery автозаполнение источника JSON - не автозаполнение, а просто показать полный список - PullRequest
3 голосов
/ 19 февраля 2012

Я использую функцию автозаполнения jQuery UI.

$("#search").autocomplete({
minLength: 0,
source: 'source.php',
select: function( event, ui ) {
    $("#search").val(ui.item.label);
    return false;
},
focus: function(event, ui) {
    $("#search").val(ui.item.label);
    return false;
}

});

Я вставляю несколько элементов в source.php и возвращаю их в кодировке json.

$search[] = array(
   'value' => $id,
   'label' => $name
);
echo json_encode($search);

Когда я начинаю печатать в поле автозаполнения, отображается список с элементами source.php. Но, к сожалению, со всеми из них. Они не фильтруются в зависимости от того, что я ввожу в поле.

Есть ли какая-либо особая опция, которую я должен установить при работе с json?

РЕДАКТИРОВАТЬ: Благодаря T.J. Crowder Я придумал это решение, чтобы jQuery справился со своей задачей; )

$.getJSON('source.php', function(search) {
    $("#search").autocomplete({
    minLength: 0,
    source: search,
    select: function( event, ui ) {
       $("#search").val(ui.item.label);
       return false;
    },
    focus: function(event, ui) {
        $("#search").val(ui.item.label);
        return false;
    }
});

1 Ответ

2 голосов
/ 19 февраля 2012

Это не очевидно из документов, но когда вы предоставляете что-либо как source, что потребует запуска вашего кода (на стороне сервера или на стороне клиента), автозаполнитель пользовательского интерфейса jQuery ожидает you для фильтрациирезультат.В случае серверного кода вы бы использовали параметр term, который он передает в ваш PHP-файл.Начиная с документа :

Когда используется строка, плагин автозаполнения ожидает, что эта строка будет указывать на ресурс URL, который будет возвращать данные JSON.Это может быть на том же хосте или на другом (должен предоставить JSONP).Параметр запроса "term" добавляется к этому URL.Сами данные могут быть в том же формате, что и локальные данные, описанные выше.

(Было бы хорошо, если бы они действительно упомянули фильтрацию там; я зарегистрировал проблему , предлагаячто они делают. Обновление: Им потребовалось менее трех часов, чтобы обновить документы и закрыть проблему; новые документы будут выдвинуты в какой-то момент, по крайней мере, до версии 1.9. Прекрасно!)

Автозаполнение позволяет вам предоставлять источники тремя способами:

  • Статический массив источников: в этом случае автозаполнение выполняет фильтрацию.

  • Вызов на стороне сервера: в этом случае он передает аргумент term, и вы должны использовать его для фильтрации.

  • Вызов на стороне клиента: В этом случаеон передает объект request вашему клиентскому коду, который имеет свойство term;вы должны использовать это для фильтрации.

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