Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль Модуль подсказок Dadata, автозаполнение полей Ф.И.О, Адреса, данные по ИНН [Поддержка]


Recommended Posts

 

 

И так по горячим следам. На примере

Цитата

При заполнении г. Севастополь

 

https://drive.google.com/file/d/1clp2FxR3Y0LlvnYVWHpmByIX6DCDED_t/view?usp=sharing

это не проблема модуля, а проблема старых данных в опенкарт, ровно у каждого магазина, пока он не столкнется, точно такие же данные =)

Вы можете воспользоваться например замечательным модулем от разработчика @AlexDW

 

  • +1 1
Надіслати
Поділитися на інших сайтах


И так, решил уйти от скрытия инпутов, потому что было много вопросов и т.д

Да и все же верно не скрывать, а помочь заполнить их.

 

В текущем контексте, модуль умеет автозаполнять поля email, имя, фамилия, адресс, город, регион(теперь исключенны, не определение его, за исключением когда владелец магазина, переделал регионы РФ), индекс.

 

Можно создавать свой объект вызова на любую страницу, описание методов - дам чуть позже.

 

Заранее заготовил готовый пример который можно не редактировать, за исключением - когда у пользователя отличаются селекторы или есть своя кастомизация корзины.

 

 

Надіслати
Поділитися на інших сайтах


Друзья обращайте внимание на https://drive.google.com/file/d/1r3NhidYvMBungN0pusH0Ebg3tj-pUq6Y/view?usp=sharing

Внизу под формой, расписал по route

{{ .... }} скодбки указывать {{ }} ненужно, это просто декорация

Надіслати
Поділитися на інших сайтах


В 03.07.2019 в 01:31, gree сказал:

Доброго дня

А планируется возможность загрузки данных ИНН для организаций и БИК банков?

На сколько я знаю dadata имеет такой функционал. А у нас юриков больше, чем физиков раза в 2, такой функционал был бы очень полезен.

Теперь это возможно.

Надіслати
Поділитися на інших сайтах


Если у вас стоит модуль доставки Shiptor, добавьте этот код в метод callback модуля dadata opencart

callback: [function(self, data) {
      let kladr_id_v = data(['kladr_id']);
  
      if(kladr_id_v) {
        kladr_id_v = kladr_id_v.slice(0,11);
        $.post("index.php?route=extension/shipping/shiptor/save", {
        	kladr_id: kladr_id_v
      	});
      }
    }, reloadAll],


Данный код тестировался на версии Opencart 2.3

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Поигрался с демо и заметил такую важную особенность, которая есть на сайте дадаты и нет на демо

когда набираю адрес на сайте дадаты - всплывают подсказки

при клике по одной из подсказок (например, в адресе всплыл только город и улица)) - этот адрес остается в поле полностью, а также курсор продолжает мигать. И с легкостью можно продолжать вбивать оставшиеся данные (дом, квартира).

 

image.thumb.png.0e38ab12a60180dcddd44624644fb7fd.png

 

 

Точно также проделываю на демо и получается так:

чтобы продолжить заполнять оставшиеся данные в адресе нужно кликнуть в поле адреса (на сайте дадаты этого не нужно делать, что очень удобно) и при этом всплывает иногда уже не тот адрес, который изначально набирал (предлагаются такие же улицы из других городов). в итоге приходится заново город набирать.

 

image.png.382834e2e1c18540bc16bff2ba56e356.png

 

Реально сделать, чтобы работало как на дадате?

 

Змінено користувачем Sergeyy84
Надіслати
Поділитися на інших сайтах


Поигрался с демо и заметил такую важную особенность, которая есть на сайте дадаты и нет на демо
когда набираю адрес на сайте дадаты - всплывают подсказки
при клике по одной из подсказок (например, в адресе всплыл только город и улица)) - этот адрес остается в поле полностью, а также курсор продолжает мигать. И с легкостью можно продолжать вбивать оставшиеся данные (дом, квартира).
 
spacer.png
 
 
Точно также проделываю на демо и получается так:
чтобы продолжить заполнять оставшиеся данные в адресе нужно кликнуть в поле адреса (на сайте дадаты этого не нужно делать, что очень удобно) и при этом всплывает иногда уже не тот адрес, который изначально набирал (предлагаются такие же улицы из других городов). в итоге приходится заново город набирать.
 
spacer.png
 
Реально сделать, чтобы работало как на дадате?
 
Здравствуйте. В поле ввода просто нужно выставить для метода reload свои значения, как собрать после перезагрузки поле ввода.

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

Отправлено с моего ZB631KL через Tapatalk

Надіслати
Поділитися на інших сайтах


11 минут назад, pimur сказал:

В поле ввода просто нужно выставить для метода reload свои значения, как собрать после перезагрузки поле ввода.

Можете на демке это сделать, если не сложно?

Надіслати
Поділитися на інших сайтах


Screenshot_20190817-113041.thumb.png.aebe688897a42e6a70508cf541f653ec.png

50 минут назад, Sergeyy84 сказал:

(на сайте дадаты этого не нужно делать, что очень удобно)

 

https://dadata.ru/suggestions/#address

Вот щас проверил. Там ровно так же как и у меня

Пока не выбрал из выпадающего списка нижние поля не заполнены.

Надіслати
Поділитися на інших сайтах


Добрый день.

В чем отличие от бесплатного модуля на форуме?

В 04.08.2019 в 04:35, pimur сказал:

И так, решил уйти от скрытия инпутов, потому что было много вопросов и т.д

На мой взгляд одно поле и сноска с "выставлено" это и была Ваша фишка! Я сам себе написал для симплы, но визуально мне Ваше решение больше понравилось и я бы его купил.
Без скрытия импутов теряется смысл основного функционала - корректность адреса. Наши дорогие покупатели все равно будут писать адрес по строкам и игнорировать основное поле с подсказкой. Я это проходил. А у Вас на демке подсказки и взаимосвязь между полями адреса не настроена. Можно индекс, город и улицу совершенно левые написать. Особенно проблема с верным адресом остра для людей проживающих за МКАД и КАД. К примеру, когда улицу нужно указывать внутри поселения: Кудрово, Шушары, Девяткино, а они упорно пишут Санкт-Петербург и по итогу доставка не считается. 

Сейчас у меня выглядит так:

 

Спойлер

774175125_.thumb.jpg.4cdfba6726ec07422a0ff52e056e6d16.jpg

Проблема только одна, забывают квартиру добавить для курьера или почты россии. Надо наверно делать доп поле с кв и вешать на него проверку при определенных вариантах доставки. 

PS. И я согласен с предыдущим комментом, что перезагружающиеся поля в симпле нервируют. Выбрал город - релоад, улицу - релоад. Мое мнение, что нужно вешать на кнопку "Рассчитать доставку". Сможете сделать?

Змінено користувачем Twix87
Надіслати
Поділитися на інших сайтах


9 часов назад, Sergeyy84 сказал:

и при этом всплывает иногда уже не тот адрес, который изначально набирал (предлагаются такие же улицы из других городов). в итоге приходится заново город набирать.

+

Спойлер

1842893953_.thumb.jpg.d02435c43ab945d8f126fcc7272b9c56.jpg

 

Надіслати
Поділитися на інших сайтах


35 минут назад, Twix87 сказал:

Без скрытия импутов теряется смысл

В чем проблема? Модуль позволяет скрывать, но уже пользовательской функцией в callback. Я просто ещё не успев написать инструкцию, но если

 

38 минут назад, Twix87 сказал:

Я сам себе написал для симплы,

Не составит труда взглянуть на исходник, кто покупает получает не сжатый js, где все понятно для тех кто понимает javascript. Обычные пользователи, просто берут с доп настройкой. У меня есть примеры и скрытием вообще всего, оставив и подменив только email, telefon, address. Я просто не стал делать полным скрытием, так как не хочу брать на себя ответственность за вдруг пользователь настроил как то не так, потом начнётся.... Отсюда и все вытекающие. Тем кому надо я уже давно реализовал полное скрытие, благо модуль позволяет расширять javascript объект callback функциями.

 

А так, даже если что то и происходит, модуль выбрасывает ошибку а консоль, и все дальше работает прекрасно)

Надіслати
Поділитися на інших сайтах


34 минуты назад, Twix87 сказал:

+

  Показать контент

1842893953_.thumb.jpg.d02435c43ab945d8f126fcc7272b9c56.jpg

 

9 часов назад, pimur сказал:

Хорошо позже. Там надо ещё обновить версию, на демо немного старее.

 

Надіслати
Поділитися на інших сайтах


49 минут назад, Twix87 сказал:

Выбрал город - релоад, улицу - релоад. Мое мнение, что нужно вешать на кнопку "Рассчитать доставку

Вот в демо, в админке посмотрите там есть внизу reloadall.

 

Что это значит, что я просто имитирую стандартное поведение симплы, для чего и почему там так хотя и отключается. А все просто, потому что модуль симпла при релоад, сохраняет данные а сессию и блягодаря этому может создавать сразу заказ хоть он и не подтверждён, да и тем самым даёт возможность восстановить корзину если пользователь не чайно перезагрузил.

И как быть? Можно сделать как и вы говорите, вообще в объект внелрен сохранения в localstorage просто в методе reload надо передать не массив, а строку с таким содержимым 'address' тогда будет сохранение и восстановление не с инпутов, а с localstorage.

 

Ps пишу с телефона по памяти.

Надіслати
Поділитися на інших сайтах


Ждите скоро инструкция будет расширенная по методам, тогда будет полет фантазий на реализацию, как вам хочется.

 

Если не хочется заморачиваться, можете написать краткое ТЗ, купить модуль и могу под ваши хотелки сделать за ₽

Надіслати
Поділитися на інших сайтах


"Проблема только одна, забывают квартиру добавить для курьера"
- у меня данной проблемы нет, потому что достаточно составить ключи верно, в примере демке кварта указанна и она не теряется.

Отправлено с моего ZB631KL через Tapatalk

Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

кому нужен вот такой вариант 

udIBrwd.png

Пример конфига объекта:

Спойлер

const ChangeState = {
    country: true,
    email: '#customer_email',
    name: '#customer_firstname',
    city: '#shipping_address_city',
    address: '#shipping_address_address_1',
    make_keys: {
      	email: {
            email: 'value'
        },
        fio: {
            name: ['surname', 'name', 'patronymic'],
        },
        address: {
            city: ['city', 'settlement_with_type', 'area_with_type'],
            address: ['city_district_with_type', 'street_with_type', ['house_type', 'house'], ['block_type', 'block'], ['flat_type', 'flat']],
        }
    },
    input: {
       email: ['div', {className: 'custom_email'}, ' \
            <input type="email" id="js_suggest_email" class="form-control" placeholder="Работает автозаполнение Email"> \
            <div class="js_suggest" hidden> \
                <ul></ul> \
                <button type="button" class="btn btn-light">✕</button> \
                <div class="small">Выберите вариант или продолжите ввод</div> \
            </div> \
        '],
        fio: ['div', {className: 'custom_fio'}, ' \
            <input type="text" id="js_suggest_fio" class="form-control" placeholder="Работает автозаполнение Ф.И.О"> \
            <div class="js_suggest" hidden> \
                <ul></ul> \
                <button type="button" class="btn btn-light">✕</button> \
                <div class="small">Выберите вариант или продолжите ввод</div> \
            </div> \
        '],
        address: ['div', {className: 'form-group jumbotron main_jumbotron'}, ' \
            <div id="js_address_out"></div><button type="button" class="btn btn-default btn-sm" onclick="document.querySelector(\'#simplecheckout_shipping_address\').hidden = false;">Ручное редактирование адреса</button>\
            <label for="js_suggest_address" class="control-label h4">Адрес - Автозаполнение:</label> \
            <textarea id="js_suggest_address" class="form-control" placeholder="Впишите полный адрес и выберите из выпадающего списка" rows="3"></textarea> \
            <div class="js_suggest" hidden> \
                <ul></ul> \
                <button type="button" class="btn btn-light"><i class="fa fa-times" aria-hidden="true"></i></button> \
                <div class="small">Выберите вариант или продолжите ввод</div> \
            </div> \
        '],
    },
    callback: [reloadAll],
    insert: {
        before: [
          	['#customer_email', 'email', true],
            ['#customer_firstname', 'fio', true],
            ['#simplecheckout_shipping_address', 'address', true]
        ]
    },
   reload: {
     	email: ['email'],
     	fio: ['name'],
        address: ['city', 'address'],
      	callback: function(self) {
          var someMore = document.querySelector('#js_address_out');
          
          if(!self.city.value) {
            someMore.innerHTML = '<span><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> укажите город</span>';
          } else if(!self.address.value) {
            someMore.innerHTML = '<span><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> укажите улицу и дом</span>';
          } else {
            
            var word = [];
            ['<b>город:</b> ' + self.city.value + '</b>', 
             '<b>улица:</b> ' + self.address.value].forEach(function(val) {
              word.push(val);
            });
            
            someMore.innerHTML = word.join(', ');
          }
        }
    },
};

 

 

 

и в стилях 

Спойлер

.main_jumbotron {
    display: flex;
    flex-direction: column;
}

#js_address_out {
    order: 1;
    padding-top: 5px;
}

#js_address_out span {
    color: red;
}

#js_address_out b {
    font-weight: 600;
}

#js_address_out b:not(:first-child),
#js_address_out span:not(:first-child) {
    padding-left: 5px;
}

.main_jumbotron>.btn {
    order: 2;
    margin-top: 10px;
}

.form-group[hidden],
.form-control[hidden] {
    display: none!important;
}

 

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.