JQuery: Как автозаполнение "Город, штат"?
Вопрос. Как вы можете использовать плагин JQuery Auto-Completion, чтобы предложить местоположение ("City, State"
) для поля ввода?
Смысл, кто-то хочет ввести "Чикаго, Иллинойс" ..., поэтому они начинают печатать "Chi"
и это автоматически предложения "Chicago, IL
".
Мои самые большие препятствия - найти сервис, который я могу запросить, чтобы узнать все названия городов США +.
Я по существу хочу сделать то, что работает форма ввода "Теги" StackOverflow, но создать автоматическое завершение "City, State".
Ответы
Ответ 1
Существует группа под названием GeoNames, которая предлагает загружаемые базы данных и бесплатные веб-службы для получения данных этого типа. Например, поиск
http://ws.geonames.org/searchJSON?name_startsWith=Chic&country=US
вернет кучу JSON, которая включает в себя Chicago, IL (свойства JSON включают, среди прочего, "имя": "Чикаго" и "adminCode1": "IL" ).
Как это происходит, пользовательский интерфейс jQuery использовал этот источник данных для демонстрации автозаполнения . (Спасибо NickT за ссылку).
Ответ 2
Вам нужно либо сделать вызов ajax на сервере всякий раз, когда нажата клавиша для обновления раскрывающегося списка "автоматически завершена", либо включает в себя массив всех возможных строк "город-состояние" и фильтрует их, когда ключ нажат.
Ответ 3
@Teleport предлагает API для поиска городов по имени, например:
https://api.teleport.org/api/cities/?search=San,%20United%20States%20of%20America возвращает Сан-Антонио, Сан-Диего, Сан-Хосе и Сан-Франциско. Вы также можете передать состояние, например. https://api.teleport.org/api/cities/?search=San,%20Tex,%20United%20States%20of%20America возвращает Сан-Антонио. И вы также можете выполнять поиск по кодам aiport (например, SFO) и другим "псевдонимам".
Также есть виджет автозаполнения для этого API, доступный по адресу https://github.com/teleport/autocomplete
Раскрытие информации: я работаю в Teleport.
EDIT: добавлен суффикс "из Америки" в термине поиска "Соединенные Штаты Америки", поскольку некоторые другие страны (Бразилия, Венесуэла) имеют формы имен, которые соответствуют "Соединенным Штатам".