Большой выбор вариантов списка? - PullRequest
0 голосов
/ 29 февраля 2012

Мне нужно, чтобы пользователь выбирал свой адрес в нашей базе данных адресов (я работаю в местном правительственном агентстве), в основном, чтобы я мог получить пин-код своего свойства.В прошлом мы запрашивали адреса, сначала выбирая улицу, затем направление, а затем номер дома.Это работает, но, как всегда, я ищу лучший путь.Я нашел этот классный плагин jQuery под названием Chosen, который позволяет человеку начать печатать, и он будет автоматически искать и находить что-то в списке.Я думаю, что это был бы отличный способ для кого-то искать свой адрес, но, как вы можете себе представить, этот список довольно большой и только увеличивается.Я действительно не хочу отправлять весь список через Интернет на один адрес.

Я думаю, мне нужно, чтобы веб-сервис возвращал данные, как это делает мгновенный поиск Google.Приблизительно после 3 символов я предоставляю им список.Существуют ли какие-либо элементы управления jQuery (или другого типа), которые могут опрашивать веб-службу при вводе?

1 Ответ

4 голосов
/ 29 февраля 2012

Попробуйте использовать виджет jQueryUI .Похоже, это именно то, что вам нужно.

Вот описание с сайта:

Автозаполнение при добавлении в поле ввода позволяет пользователям быстро находить и выбирать из предварительнозаполняет список значений по мере их ввода, используя поиск и фильтрацию.

Задав фокус поля автозаполнения или введя в него что-либо, плагин начинает поиск записей, которые соответствуют, и отображает список значений на выбор.Вводя больше символов, пользователь может отфильтровать список для лучшего соответствия.

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

Вы можете извлекать данные из локального и / или удаленного источника: локальный подходит для небольших наборов данных (например,адресная книга с 50 записями), дистанционное необходимо для больших наборов данных, таких как база данных с сотнями или миллионами записей для выбора.

Автозаполнение можно настроить для работы с различными источниками данных, просто указав источниквариант.Источником данных может быть:

  • Массив с локальными данными
  • Строка с указанием URL
  • Обратный вызов

Ожидаетсяформат данных

Данные из локальных данных, URL или обратного вызова могут иметь два варианта:

  • Массив строк: ["Choice1", "Choice2"] *
  • Массив объектов со свойствами метки и значения: [{label: "Choice1", значение: "value1"}, ...]

Свойство метки отображается в предложениименю.Значение будет вставлено в элемент ввода после того, как пользователь выберет что-то из меню.Если указано только одно свойство, оно будет использоваться для обоих, например.если вы предоставляете только значения-свойства, значение также будет использоваться в качестве метки.

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

Третий вариант, обратный вызов, обеспечивает наибольшую гибкость и может использоваться для подключения любого источника данных к автозаполнению.Обратный вызов получает два аргумента:

  • Объект запроса с единственным свойством под названием «term», который ссылается на значение, которое в настоящее время находится в текстовом вводе.Например, когда пользователь ввел «новый йо» в поле города, термин «автозаполнение» будет равен «новый йо».
  • ответный обратный вызов, который ожидает, что в одном аргументе будут содержаться данные, предлагаемые пользователю,Эти данные должны быть отфильтрованы на основе предоставленного термина и могут быть в любом из форматов, описанных выше для простых локальных данных (String-Array или Object-Array с меткой / значением / обоими свойствами).Это важно при предоставлении пользовательского обратного вызова источника для обработки ошибок во время запроса.Вы всегда должны вызывать ответный обратный вызов, даже если вы столкнулись с ошибкой.Это гарантирует, что виджет всегда будет иметь правильное состояние.

Метка всегда обрабатывается как текст, если вы хотите, чтобы метка рассматривалась как html, вы можете использовать расширение html Скотта Гонсалеса.Все демонстрации посвящены различным вариантам опции источника - найдите ту, которая соответствует вашему варианту использования, и посмотрите на код.

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