Разбор подсказок по разным полям
Здравствуйте! У меня есть 2 поля, 1 для города, 2 для адреса
И при вводе города изначально менял формат через OnSelect и делал в формате "город,обл,район,индекс", но при вводе улицы, формат города менялся что нельзя делать. Сейчас сделать через formatSelected функцию, но теперь при вводе улицы нет индекса, без него тоже никак. Как быть в данной ситуации?
И сейчас попытался авторизоваться с данными на сайте, но мне пишет что неверный пароль, хотя на сайте вхожу.
Ответ
Добрый день! Можете дать ссылку на страницу, где можно посмотреть всё это в действии? Из описания я слабо понял, что не так и что надо сделать.
К сожалению, ссылки нет. Переформулирую вопрос. При гранулярных полях(т.е. город, улица в разных полях).
При заполнении улицы перезаполняется город.
Например: ввел в инпут с городом Тулу, выбрал из списка(при этом использую переформатирование адреса и подставляю индекс). Затем ввожу в инпут с улицей улицу и выбираю ее. Как итог поле с городом перезаполнилось автоматически и индекс убрался (поле сделалось по умолчанию)
Боюсь, что гранулярные подсказки плохо сочетаются с изменением формата. Почему бы просто не вывести индекс в отдельное поле?
Потому что до этого использовали подсказки другого сервиса, но последнее время он совсем не стабильный, а весь функционал переписывать не очень хочется. Я вроде как решил проблему, отрыл на форуме вот такую функцию:
function enforceCity(suggestion) {
var sgt = $street.suggestions();
sgt.setOptions({
constraints: {
locations: { kladr_id: suggestion.data.kladr_id }
},
formatSelected: formatSelectedS,
restrict_value: true
});
})
Подскажите еще, есть ли какой-либо метод, который вызывается перед самой вставкой результата в поле? т.к. столкнулся с проблемой, когда в конце строки добавляется пробел. При этом value результата без пробела в конце. Как пример: Выбираю город, из полученного массива формирую необходимую строку и подставляю ее в suggestion.value. А в итоге получается пробел в конце строки.
Этот метод разве используется не для выполнения каких-либо действий с выпадающим списком? Я имею ввиду вот этот пробел https://prnt.sc/gpeu51 когда уже выбран какой-либо н/п
Да, вы правы. Метод для форматирование результата — formatSelected. Но пробел подставляется уже после того, как он вызывается.
Штатного способа убрать пробел я не вижу. Можно попробовать через хак, но это не слишком надёжно и может отломаться в следующих версиях плагина:
var sgt = $("#address").suggestions(); var oldSelectSuggestion = sgt.selectSuggestion; sgt.selectSuggestion = function (suggestion, index, lastValue, selectionOptions) { var options = selectionOptions || {}; options.noSpace = true; oldSelectSuggestion.call(sgt, suggestion, index, lastValue, selectionOptions); }
А почему бы его не убрать вообще в плагине? я думаю он мешается большинству и как по мне, так смысла не несет вовсе.
Чем же он мешает? Он помогает вводить адрес (выбрал подсказку и продолжаешь печатать). У вас довольно экзотический сценарий, мне кажется.
Экзотический мягко сказано=) Спасибо за предоставленные ответы. Вы очень помогли.
А есть ли какой-либо метод, который идентичен formatResult, но вызывается только 1 раз? Просто еще есть необходимость добавить иностранные города, для этого есть табличка в базе со всеми необходимыми данными и планирую из базы подтягивать эти города, при вводе их в поле.
Если я правильно понял, вы хотите «подмешать» результаты в ответ от подсказок. Для этого подойдёт обработчик onSuggestionsFetch.
Нашел метод
onSearchComplete
Он бы идеально подходил, но почему то вызывается он после появления выпадающего списка.
А можно ли как то получить query, т.е. по какой строке поиска была выдача по данному обработчику?
Спасибо. А еще подскажите, почему обработчик onSuggestionsFetch вызывается так же при выборе населенного пункта?
Он вызывается каждый раз, когда сервер что-то возвращает. При выборе конкретного адреса идёт запрос на сервер (для получения дополнительной информации вроде геокоординат), поэтому он срабатывает.
Сервис поддержки клиентов работает на платформе UserEcho
Да, вы правы. Метод для форматирование результата — formatSelected. Но пробел подставляется уже после того, как он вызывается.
Штатного способа убрать пробел я не вижу. Можно попробовать через хак, но это не слишком надёжно и может отломаться в следующих версиях плагина: