Вход / Регистрация

Создайте сайт прямо сейчас!

Зарегистрируйтесь по ссылкам и получите дополнительные бонусы при создании сайта



  • Персональный перечень способов заработка на сайте именно вашей тематики
  • Аудит юзабилити сайта бесплатно $20
  • Набор скриптов на сумму $40 для увеличения продаж
  • Аудит юзабилити интернет магазина бесплатно $60

Как получить бонусы?


Как только вы создадите сайт по одной из указанных ссылок, я увижу это в отчете партнерской программы:

После оплаты одного из пакетов, отправьте запрос на info@ucozmagazines.ru с указанием адреса созданного сайта.

Автоматически исправляем ошибки в адресах DaData.ru

О чем здесь?

Автоматическое исправление ошибок в адресах доставки с помощью сервиса https://dadata.ru.

Продукты DaData.ru помогают крупным компаниям привести в порядок клиентскую базу. В этой заметке мы рассмотрим, как привести в порядок адреса доставки.

Как это работает?

Мы подключим jQuery плагин для страницы оформления заказа, который будет следить за полем для ввода адреса доставки. В момент, когда пользователь начнет набирать в нем свой адрес, плагин выполнит запрос к API dadata.ru и предложит список адресов, который удовлетворяет запросу. При нажатии на один из адресов, он будет помещен в поле адреса доставки.

Исправляем ошибки в адресах

Т.е. на выходе мы имеем не только структурированный массив адресов для доставки, но и реальную помощь посетителям в оформлении заказа.

Чтобы начать работать необходимо иметь API-ключ. Зарегистрируйтесь, например по этой ссылке:

Исправляем ошибки в адресах

После этого перейдите в личный кабинет и скопируйте API-ключ:

Исправляем ошибки в адресах

В дальнейшем, мы будем использовать этот ключ при подключении плагина подсказок.

Настройка плагина для интернет магазина uCoz

Описание плагина, который мы будем использовать вы можете найти здесь. Исходный вид:

<input id="address" name="address" type="text" size="100"/>
<link href="https://dadata.ru/static/css/lib/suggestions-15.12.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<!--[if lt IE 10]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.1/jquery.xdomainrequest.min.js"></script>
<![endif]-->
<script type="text/javascript" src="https://dadata.ru/static/js/lib/jquery.suggestions-15.12.min.js"></script>
<script type="text/javascript">
 $("#address").suggestions({
 serviceUrl: "https://dadata.ru/api/v2",
 token: "API-ключ",
 type: "ADDRESS",
 count: 5,
 /* Вызывается, когда пользователь выбирает одну из подсказок */
 onSelect: function(suggestion) {
 console.log(suggestion);
 }
 });
</script>

Приведенный код состоит из нескольких частей:

  1. <input ... /> — поле, в которое вводится адрес доставки и под которым появляются подсказки. У нас в качестве этого поля будут выступать поля заказа с id = "order-fld-N" (здесь N — номер поля)
  2. suggestions-15.12.css — стили оформления подсказок, если не включить эти стили, подсказки не будут видны
  3. jquery.min.js — jQuery версии 1.10.2. На сайтах uCoz jQuery подключается автоматически, а выбрать версию можно в общих настройках сайта
  4. jquery.xdomainrequest.min.js — плагин для кроссдоменных запросов IE младше 10-ой версии
  5. jquery.suggestions-15.12.min.js — плагин подсказок

Если взглянуть на код подключения плагина для поля, то можно увидеть следующее:

  • #address — селектор поля, к которому подключаются подсказки
  • token: "API-ключ" — этот ключ вы получите после регистрации на dadata.ru в личном кабинете
  • type: "ADDRESS" — тип поисковых подсказок. Кроме адреса существуют подсказки для ФИО, организаций, банков и email
  • count — количество вариантов в подсказках
  • onSelect — функция, которая выполняется после выбора подсказки. При этом в функцию передается аргумент suggestion, в котором вы найдете подробную информацию о подсказке

Я покдлючу плагин для поля под номером 3. Вот полный код, который нужно разместить на странице служебных форм после $ORDER_FIELDS$:

<link href="https://dadata.ru/static/css/lib/suggestions-15.12.css" type="text/css" rel="stylesheet" />
<!--[if lt IE 10]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.1/jquery.xdomainrequest.min.js"></script>
<![endif]-->
<script type="text/javascript" src="https://dadata.ru/static/js/lib/jquery.suggestions-15.12.min.js"></script>
<script type="text/javascript">
 $("#order-fld-3").suggestions({
 serviceUrl: "https://dadata.ru/api/v2",
 token: "API-ключ",
 type: "ADDRESS",
 count: 5
 });
</script>

Еще можно после выбора подсказки пользователем запускать калькулятор стоимости доставки, который мы недавно реализовали в 68 уроке:

<link href="https://dadata.ru/static/css/lib/suggestions-15.12.css" type="text/css" rel="stylesheet" />
<!--[if lt IE 10]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.1/jquery.xdomainrequest.min.js"></script>
<![endif]-->
<script type="text/javascript" src="https://dadata.ru/static/js/lib/jquery.suggestions-15.12.min.js"></script>
<script type="text/javascript">
 $("#order-fld-3").suggestions({
 serviceUrl: "https://dadata.ru/api/v2",
 token: "API-ключ",
 type: "ADDRESS",
 count: 5,
 /* Вызывается, когда пользователь выбирает одну из подсказок */
 onSelect: function(suggestion) {
 myCalculator(suggestion.data.city);
 }
 });
</script>

Демонстрация работы

Здесь будет содержимое suggestion...

Статьи по теме

Сергей    15.09.2016    16075    5.0 из 5.0 (16)

Оцените материал:

Обсуждение

Всего комментариев: 14

avatar
1
Хороший материал. Спасибо
т
2
как добавить к почтовой форме? прописываю в $("#address") имя поля куда пишется адрес. ничего не получается
avatar
0
3
В шаблоне почтовой формы тогда нужно указать этот id для поля с адресом или использовать при инициализации id поля, который дает форма.
avatar
4
Спасибо. Полезная штука.
avatar
5
А если для 2х полей сразу, это 2 скрипта или в одном можно как то через запятую сделать?
avatar
0
6
Если одинаковые подсказки, то через запятую можно

Код
<script type="text/javascript"> $("#address1, #address2").suggestions({
  serviceUrl: "https://dadata.ru/api/v2",
  token: "API-ключ",
  type: "ADDRESS",
  count: 5,
  /* Вызывается, когда пользователь выбирает одну из подсказок */
  onSelect: function(suggestion) {
  console.log(suggestion);
  }
  });
</script>
M
7
По подсказке выводится адрес без почтового индекса - а можно его тоже как-нибудь отобразить или вывести в еще одну строку?
avatar
0
8
В документации нет возможности настроить вид подсказки. Но есть onSelect в котором можно попытаться поменять их вид.
V
9
Вот здесь написано про ИНДЕКС. Работает, индекс подставляется. Но в подсказках его нет.
http://dadata.userecho.com/topics/723-poisk-po-indeksu-v-podskazkah/
avatar
0
10
Индекс в ответе вот:
Код
suggestion.data.postal_code

Но появляется он только тогда, когда адрес указан с точностью до дома
a
11
Сергей, прикрутил данную штуку (заполняются поля NAME и ADDRESS) к интернет-магазину - всё работает! Сейчас на другом сайте пытаюсь сделать тоже самое с обычной почтовой формой $MFORM_1$ и те же поля - например для ФИО / NAME - указываю соответствующее поле f2  -  $("#f2"). Не работает(((((
avatar
0
12
в почтовых формах f2 это не id, а имя, т.е. надо $('[name="f2"]') и их там несколько на странице может быть, так что аккуратнее.
a
13
Большое спасибо, Сергей, заработало!!!
a
14
Вопрос снят: скопировал себе suggestions-15.12.css и изменил параметры, всё встало.
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Автоматически исправляем ошибки в адресах DaData.ru
Автоматически исправляем ошибки в адресах DaData.ru