0
Answered

Подсказки Адрес: дать возможность произвольного ввода адреса

Егор 2 years ago in Подсказки • updated 2 years ago 8

Всем привет!

Хочу позволить пользователю вводить адрес как он хочет, но предоставить ему возможность мышью подтвердить выбор соответствующего адресного объекта. Я уже "под капотом" раскидаю полученные данные по полям и т.д. Но пользователю нужно дать возможность вводить адрес так как он хочет: со страны ли начинает, с города, с дома, вперед-назад, может на три страницы ему нужно адрес расписать... То есть нужно, чтобы значение в поле #address не изменялось при выборе найденного объекта, а оставалось ровно тем же, каким его ввел пользователь.

Как я понял, либо triggerSelectOnSpace не про это, либо я не понял, как его "готовить", либо у меня почему-то не работает. Я правильно тогда понимаю, что нужно модифицировать функцию onSelect() ?

Answer

Answer
Answered

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


Как перекрыть это поведение: запоминать введенное пользователем значение и возвращать его в обработчике formatSelected.

Answer
Answered

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


Как перекрыть это поведение: запоминать введенное пользователем значение и возвращать его в обработчике formatSelected.

Когда человек выбирает мышью вариант из списка, естественно и ожидаемо, что его выбор подставляется в текстовое поле

Все верно! Но тут у меня кейс такой, что в документе, с которым работает оператор системы адрес может быть написан весьма и весьма произвольным образом. Нам, естественно, нужно идентифицировать адрес по адресным системам и разбить его на город, улицу и т.д. Но с другой стороны, не менее (если не более!) важно, сохранить написание адреса именно в том виде, в котором мы его получили в документе. Задача "Подсказки" в данном случае не отформатировать адрес в "человеческий" вид, а предоставить нам возможность на базе "кривого", но необходимого для сохранения в базе данных написания, получить идентификатор адреса в адресных системах и "раскидать" его незаметно для оператора на составляющие. Может быть немного странный и нестандартный кейс, но тем не менее :)


"запоминать введенное пользователем значение" - в смысле на каждый onkeydown обновлять некую переменную и потом ее возвращать уже formatSelected или можно это значение как-то взять от объекта, переданного в .suggestions() ?

Например, сохранять в обработчике onSearchComplete. Его сигнатура function (query, suggestions) {}. Первый параметр и есть введенный пользователем текст.

Спасибо! Будем пробовать!

Все получилось! Ура! А можно как-то встроенными средствами задизейблить подсказки, после того как сработало onSelect?