Служба поддержки DaData.ru
Если чего-то не хватает, или вы столкнулись с проблемой — оставьте сообщение, и мы ответим в течение 24 часов. Работаем с понедельника по пятницу, с 10 до 19 по Москве.
Ошибка в jQuery плагине при формированию value по объекту адреса
если передать плагину следующий параметр
{ bounds: "city-settlement" }, тогда при вводе "Железнодорожный" в подсказках будет показываться "Московская обл, г Железнодорожный", а при выборе этого варианта - в поле запишется "г Железнодорожный", а должно писаться именно как в подсказке.
Чтобы изменить это поведение, я изменил параметр на { bounds: "region-area-city-settlement" }, тогда при вводе "Железнодорожный" - все правильно и показывается в подсказках и при выборе "Московская обл, г Железнодорожный"
а вот для запроса "Москва" - в подсказках будет показываться "г Москва" а при выборе - "г Москва, г Москва", соответственно для этого варианта ситуация следующая - когда происходит выбор варианта подсказки - к вам на сервер уходит запрос с параметром { count: 1 }, он возвращает объект suggestion, внутри которого поле value заполнено как надо "г Москва", потом этот объект suggestion попадает вот в эту функцию:
checkValueBounds: function (suggestion) {
var that = this,
valueData;
// If any bounds set up
if (that.bounds.own.length && that.type.composeValue) {
valueData = that.copyBoundedData(suggestion.data, that.bounds.own);
suggestion.value = that.type.composeValue(valueData);
}
}
И здесь поле value перезаписывается через функцию composeValue
composeValue: function (data) {
return utils.compact([
data.region_with_type || utils.compact([data.region, data.region_type]).join(' '),
data.area_with_type || utils.compact([data.area_type, data.area]).join(' '),
data.city_with_type || utils.compact([data.city_type, data.city]).join(' '),
data.settlement_with_type || utils.compact([data.settlement_type, data.settlement]).join(' '),
data.street_with_type || utils.compact([data.street_type, data.street]).join(' '),
utils.compact([data.house_type, data.house, data.block_type, data.block]).join(' '),
utils.compact([data.flat_type, data.flat]).join(' '),
data.postal_box ? 'а/я ' + data.postal_box : null
]).join(', ');
}
Но она очевидно работает не правильно, т.к. вы в обновлении 15.7 - сделали следующий пункт:
Адрес одной строкой формируем с учетом требований Почты России: если город — центр региона, название региона не пишется (г Новосибирск, ул Абаканская, д 21). Если центр района — не пишется название района (Московская обл, г Одинцово, ул Ракетчиков).А в функции composeValue - value просто формируется объединеннием всего подряд - вот и получается что от сервера приходит правильный value "г Москва", а функция composeValue возвращает неправильное значение "г Москва, г Москва".
Т.к. запрос к вашему серверу при выборе подсказки уходит с параметрами { count: 1, from_bound: {value: "region"}, to_bound: {value: "settlement"} }, т.е. с учетом bounds, то и ответ приходит правильно отформатированный уже, поэтому по-сути вызов composeValue - просто лишний, поэтому у себя я просто исправил функцию checkValueBounds вот так:
checkValueBounds: function (suggestion) {
return;
var that = this,
valueData;
// If any bounds set up
if (that.bounds.own.length && that.type.composeValue) {
valueData = that.copyBoundedData(suggestion.data, that.bounds.own);
suggestion.value = that.type.composeValue(valueData);
}
}
P.S. Еще у меня есть проблема - наша компания задумывается о приобретении standalone версии подсказок, чтобы обезопасить себя от вопросов доступности вашего сервиса, но мне никак не может ваш менеджер толком объяснить - что именно будет работать по-другому в standalone версии, но говорит что точно чего-то не будет, а чего до конца не ясно, в общем плавает ваш менеджер в этом вопросе... Я предложил чтобы не разбираться с этим вопросом на словах, а опробовать в деле - можете ли вы запустить у себя отдельную чистую standalone версию, и давать к ней доступ хотя бы по запросу через менеджера, а то как-то стремно покупать лицензию на что-то что работает так же, но только не совсем точно так же, а вот по-другому:) Хочется перед покупкой оттестировать именно на том функционале который и будет приобретен.
P.P.S. Спасибо за ваш сервис - все очень круто!)
Исправили проблему с bounds, два раза Москву не пишем:
https://cdn.jsdelivr.net/npm/suggestions-jquery@17.5.0/dist/js/jquery.suggestions.min.js
https://cdn.jsdelivr.net/npm/suggestions-jquery@17.5.0/dist/css/suggestions.min.css
Только при count = 1 в запросе возвращается пустой массив(объект)
возвращает:
{"suggestions":[]}
При том всё где ">1" по 2 и более объекта масиве:
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "Authorization: Token ****" -d "{ \"count\": 2, \"query\": \"Москва, Ленинский пр-кт, 99\" }" https://dadata.ru/api/v2/suggest/address
{"suggestions":[{"value":"Ханты-Мансийский Автономный округ - Югра, г Сургут, ул Курортная, д 99б","unrestricted_value":"Ханты-Мансийский Автономный округ - Югра, г Сургут, ул Курортная, д 99б","data":{"qc_complete":null,"qc_house":null,"qc_geo":null,"postal_code":"628403","postal_box":null,"country":"Россия","region_with_type":"Ханты-Мансийский Авт
╨╛╨╜╨╛╨╝╨╜╤ï╨╣ ╨╛╨║╤Ç╤â╨│ - ╨«╨│╤Ç╨░","region_type":"╨░╨╛","region_type_full":"╨░╨▓╤é╨╛╨╜╨╛╨╝╨╜╤ï╨╣ ╨╛╨║╤Ç╤â╨│","region":"╨Ñ╨░╨╜╤é╤ï-╨£╨░╨╜╤ü╨╕╨╣╤ü╨║╨╕╨╣ ╨É╨▓╤é╨
╛╨╜╨╛╨╝╨╜╤ï╨╣ ╨╛╨║╤Ç╤â╨│ - ╨«╨│╤Ç╨░","area_with_type":null,"area_type":null,"area_type_full":null,"area":null,"city_with_type":"╨│ ╨í╤â╤Ç╨│╤â╤é","city_type":"╨│","city_type_full":"╨│╨╛╤Ç╨╛╨┤","city":"╨í╤â╤Ç╨│╤â╤é","settlement_with_type":null,"settlement_type":null,"settlement_type_full":null,"settlement":null,"street_with_type":"╤â╨╗ ╨Ü╤â╤Ç╨╛╤Ç╤é╨╜╨░╤Å","street_type":"╤â╨╗","street_type_full":"╤â╨╗╨╕╤å╨░","street":"╨Ü╤â╤Ç╨╛╤Ç╤é╨╜╨░╤Å","house_type":"╨┤","house_type_full":"╨┤╨╛╨╝","house":"99╨▒","block_type":null,"block":null,"flat_area":null,"flat_type":null,"flat":null,"fias_id":null,"kladr_id":"8600001000000480006","tax_office":"8602","tax_office_legal":null,"okato":"71136000000","oktmo":null,"geo_lat":null,"geo_lon":null,"unparsed_parts":null,"qc":null}},{"value":"╤Ç╨╡╤ü╨┐ ╨í╨╡╨▓╨╡╤Ç╨╜╨░╤Å ╨₧
сетия - Алания, г Владикавказ, ул Ардонская, д 99","unrestricted_value":"респ Северная Осетия - Алания, г Владикавказ, ул Ардонская, д 99","data":{"qc_complete":null,"qc_house":null,"qc_geo":null,"postal_code":"362008","postal_box":null,"country":"Россия","region_with_type":"респ Северная Осетия - Алания","region_type":"респ","region_type_full":"республик
╨░","region":"╨í╨╡╨▓╨╡╤Ç╨╜╨░╤Å ╨₧╤ü╨╡╤é╨╕╤Å - ╨É╨╗╨░╨╜╨╕╤Å","area_with_type":null,"area_type":null,"area_type_full":null,"area":null,"city_with_type":"╨│ ╨Æ╨╗╨░╨
┤╨╕╨║╨░╨▓╨║╨░╨╖","city_type":"╨│","city_type_full":"╨│╨╛╤Ç╨╛╨┤","city":"╨Æ╨╗╨░╨┤╨╕╨║╨░╨▓╨║╨░╨╖","settlement_with_type":null,"settlement_type":null,"settlement_type_full":null,"settlement":null,"street_with_type":"╤â╨╗ ╨É╤Ç╨┤╨╛╨╜╤ü╨║╨░╤Å","street_type":"╤â╨╗","street_type_full":"╤â╨╗╨╕╤å╨░","street":"╨É╤Ç╨┤╨╛╨╜╤ü╨║╨░╤Å","house_type":"╨┤","house_type_full":"╨┤╨╛╨╝","house":"99","block_type":null,"block":null,"flat_area":null,"flat_type":null,"flat":null,"fias_id":null,"kladr_id":"1500000100000080017","tax_office":"1513","tax_office_legal":null,"okato":"90401000000","oktmo":null,"geo_lat":null,"geo_lon":null,"unparsed_parts":null,"qc":null}}]}
Мне всё равно нужен первый элемент, но без count=1 нету геолокации, если я верно понял.
А почему везде в полях *_with_type добавляется короткое наименование типа, а в settlement_with_type полное?
Индекс для Организаций
Здравствуйте. Использую модуль "Организации", получаю юридический адрес без индекса. Как получить индекс?
Не работает blur() в подсказках PARTY и EMAIL
Добрый день.
Суть вопроса такова. На onSelect даю инпуту событие blur(). В ADDRESS работает великолепно. В EMAIL и PARTY упорно держит курсор на поле и не переставляет его на другое место. Иных перекрывающих blur/on ('blur') событий/масок и тп на эти инпуты нет. Даже не могу зафокусить другое поле на onSelect (в ADDRESS могу - заполняемые зависимые поля или независимые поля с раскладываемыми значениями - не важно).
Добрый день!
Вижу проблему. Как понимаю, речь идет только о фокусе мышью, с клавиатуры работает. Быстрое решение – в onSelect все операции с фокусом сделать через setTimeout(..., 0)
Как получить общее количество организаций ЕГРЮЛ/ЕГРИП по введенным данным?
Получение значения геолокации в javascript
Как сделать подсказки только по России?
Исползую jQuery плагин. Хочу сделать, чтобы нельзя было ввести в поле города и регионы за пределами РФ. Как это можно сделать?
Ограничить поиск только по России можно так: https://codepen.io/dadata/pen/LkJxvw
Cдвиг полей вправо в подсказказ адреса
Я сделал для себя модуль для интеграции подсказок по адресам с SuiteCRM. Почему-то иногда при использовании firefox непонятным образом адрес после ввода его строкой и разложением по полям смещается вправо.
Вот пример ввода адреса
https://mega.nz/#!L0gTEBTK!7zcnz48I-l8iA49LV1cTd63iAElQwHJ6Pb57lILIOvs
Вот что получаем после выбора
https://mega.nz/#!e0ISRaoA!55PKePr_Nx_HtlM9-32pfLHXnEvwRFF7P8k647vTR18
Если пройти по полям табом, то проблема уходит и больше не проявляется (только при первой попытке использования)
https://mega.nz/#!a1ZmmarS!MJ8CpUUTYdPwTpFr9-BgA3EhI9zN6wV9EZHngcieJqE
Если вводит адрес покомпонентно, то проблемы нет вообще
https://mega.nz/#!X5x0SRyY!PlkYyXlCwtO5l8MIyz-JDthMEx92AiDrZzCH3shlr-A
var serviceUrl = "https://dadata.ru/api/v2",
token = "МОЙ КЛЮЧ",
type = "ADDRESS",
country = $("#billing_address_country"),
postalcode = $("#billing_address_postalcode"),
state = $("#billing_address_state"),
district = $("#billing_address_district"),
city = $("#billing_address_city"),
locality = $("#billing_address_locality"),
street = $("#billing_address_street"),
house = $("#billing_address_house"),
building = $("#billing_address_building"),
appt = $("#billing_address_appt"),
full = $("#billing_address_full"),
kladr = $("#billing_address_kladr");
full.suggestions({
serviceUrl: serviceUrl,
token: token,
type: type,
count: 5,
onSelect: fillAddrFields
});
state.suggestions({
serviceUrl: serviceUrl,
token: token,
type: type,
hint: false,
bounds: "region",
onSelect: fillAddrFields
});
district.suggestions({
serviceUrl: serviceUrl,
token: token,
type: type,
hint: false,
bounds: "area",
constraints: state,
onSelect: fillAddrFields
});
city.suggestions({
serviceUrl: serviceUrl,
token: token,
type: type,
hint: false,
bounds: "city",
constraints: district,
onSelect: fillAddrFields
});
locality.suggestions({
serviceUrl: serviceUrl,
token: token,
type: type,
hint: false,
bounds: "settlement",
constraints: city,
onSelect: fillAddrFields
});
street.suggestions({
serviceUrl: serviceUrl,
token: token,
type: type,
hint: false,
bounds: "street",
constraints: locality,
onSelect: fillAddrFields
});
house.suggestions({
serviceUrl: serviceUrl,
token: token,
type: type,
hint: false,
bounds: "house",
constraints: street,
onSelect: fillAddrFields
});В других браузерах проблемы вроде нет.Дмитрий
Сервис поддержки клиентов работает на платформе UserEcho