0
Fixed

Гранулярный ввод адреса не работает если регион или населенный пункт уже заполнены

Anonymous 5 years ago updated by Антон 5 years ago 6
На странице гранулярный ввод адреса.
Ввели регион, ввели населенный пункт из региона, сохранили в БД.
Зашли на страницу на которой подставились сохораненный регион и населенный пункт.
Пытаемся изменить населенный пункт - к выбору предоставляются любой населенный пункт, как будто регион не задан. Аналогично при вводе улицы.
Вот пример http://codepen.io/anon/pen/JoJvpN

Answer

Answer
Fixed
Начиная с версии 15.2, можно ограничить поиск предварительно сохраненными в полях значениями:
$('#house').suggestions('fixData');
Пример
Planned
К сожалению, сейчас нет удобного способа ограничивать поиск предварительно сохраненными в полях значениями. Добавим.

Пока для того, чтобы ваш пример работал, нужно в БД сохранять не просто регион / город, но и их КЛАДР-коды.
И при входе на страницу заполнять текстбоксы так:
$region.suggestions().setSuggestion(
  {
    "value": "Московская обл, Мытищинский р-н",
    "data": { "kladr_id": "5001900000000" }
  }
); 
Вот пример.
Спасибо попробую.
А почему для фильтрации используется идентификатор КЛАДР, он ведь может изменяться при переподчинении? В базе хочется хранить идентификатор ФИАС и по нему работать.
Возможно, перейдем на ФИАС в дальнейшем.
С setSuggestion появилась другая проблема. Если через все значения заданы через setSuggestion, то клик в поле ввода региона и затем перевод фокуса из него очищает поле с городом и улицей.
Вот пример http://codepen.io/anon/pen/emVMmN
1. Кликаем в поле ввода региона
2. Кликаем в любом другом месте страницы
3. Поле ввода города очищается
Спасибо за замечание, исправим.
Пока, чтобы работало с setSuggestion, кладите в него полный объект.
Пример - http://codepen.io/anon/pen/xbYewj
Также в марте мы добавим более удобный способ для работы с предварительно сохраненными в полях значениями.
Answer
Fixed
Начиная с версии 15.2, можно ограничить поиск предварительно сохраненными в полях значениями:
$('#house').suggestions('fixData');
Пример