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

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


Recommended Posts

  В 27.02.2021 в 02:59, Skiffjkee сказав:
Заметил такую особенность, что именно на мобильной версии не срабатывает перезагрузка поля, когда вводишь или изменяешь блоки город, адрес, индекс.
В симпле перезагрузка включена, в чем может быть проблема?
 
и второй вопрос продублирую
 
Таких случаев хватает, например если город Омск, то всегда по разному срабатывает определение области, Омская или Томская. На сколько понимаю, проблема в дадате, что нет четкой привязки между регионами модуля и регионами самого опенкарта?
https://dadata.ru/api/suggest/address/#response
Настроить ключи под свои потребности. В методах format city и т.д
Смотреть какой ключ к какому относится в ответе и смотреть в собранный конфиг там где ключи прописаны

Отправлено с моего Redmi Note 9 Pro через Tapatalk

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


@pimur

Увы, понимание что и как править нет.

На сколько понимаю, ошибка в некорректном подставлении региона и не происходит перезагрузка в мобильной версии - это проблема в коде?

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


  В 27.02.2021 в 00:25, Sha сказав:

Переключать страны можно, например, так.

var $city = $('#shipping_address_city')
var $country = $('#shipping_address_country_id')
var country_text = $country.find(":selected").text()

var list_resolve = {"Белоруссия (Беларусь)": "Беларусь", "Казахстан": "Казахстан", "Украина": "Украина", "Российская Федерация": "Россия"}

if(!list_resolve[country_text])
  return false

$city.suggestions({
  token: token,
  type: 'ADDRESS',
  bounds: "city-settlement",
  geoLocation: false,
  constraints: {
      locations: {
        country: list_resolve[country_text]
      }
  }
});

 

Expand  

Спасибо большое, теперь у меня модуль включается только для России.

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


  В 27.02.2021 в 09:41, pimur сказав:

https://dadata.ru/api/suggest/address/#response
Настроить ключи под свои потребности. В методах format city и т.д
Смотреть какой ключ к какому относится в ответе и смотреть в собранный конфиг там где ключи прописаны

Отправлено с моего Redmi Note 9 Pro через Tapatalk
 

Expand  

 Проблему с неверным определением региона получилось победить 

 

Нужно сопоставить каждому номеру kladr_id региона (их можно посмотреть на https://github.com/hflabs/region/blob/master/region.csv) и составить такую карту соответствия:

var REGION_MAPPING = {
  "2200000000000": "2726", // Алтайский край
  "2800000000000": "2729", // Амурская обл
  ...
};

Дальше эту карту можно использовать в formatRegion() примерно так:

function formatRegion(address) {
    $postcode.val(address.postal_code || '');
    if (address.region_kladr_id) {
        var region_num = REGION_MAPPING[address.region_kladr_id];
        $region.val(region_num);
    }
}

 

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

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


  В 04.03.2021 в 14:49, Skiffjkee сказав:

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

Expand  

simple ?

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

тогда нужно искать причину в simple она отвечает за перезагрузку.

можно конечно и принудительно, но зачем)

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

  В 04.03.2021 в 17:05, Sha сказав:

тогда нужно искать причину в simple она отвечает за перезагрузку.

можно конечно и принудительно, но зачем)

Expand  

Раньше задавал вопрос в теме симпл, ответ был:

  Цитата

Нет никаких особенностей до тех пор, пока код не правится. Вопрос нужно задать автору скриптов дадаты

Expand  

 

На сколько понимаю, в коде что то дописать надо...

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


  В 04.03.2021 в 14:49, Skiffjkee сказав:
 Проблему с неверным определением региона получилось победить 
 
Нужно сопоставить каждому номеру kladr_id региона (их можно посмотреть на https://github.com/hflabs/region/blob/master/region.csv) и составить такую карту соответствия:
var REGION_MAPPING = { "2200000000000": "2726", // Алтайский край "2800000000000": "2729", // Амурская обл ...};

Дальше эту карту можно использовать в formatRegion() примерно так:

function formatRegion(address) {   $postcode.val(address.postal_code || '');   if (address.region_kladr_id) {       var region_num = REGION_MAPPING[address.region_kladr_id];       $region.val(region_num);   }}

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

Спасибо.

Отправлено с моего Redmi Note 9 Pro через Tapatalk

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


  В 04.03.2021 в 17:02, Skiffjkee сказав:
[mention=678008]Sha[/mention] Да!
Работает. Нужно куда то кликнуть или Тап после выбора. То есть в мобильном события происходит, когда вы выбрали и убрали фокус с поля.


Отправлено с моего Redmi Note 9 Pro через Tapatalk

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


Sha есть смысл разово взять соответствия регионов и просто в return возвращать строку json
Тогда каждый может дергать эти соответствия регионов если понадобится.
Да и в целом в моем примере в методе format region вроде так называется. Поправить на обращение к этому json

Отправлено с моего Redmi Note 9 Pro через Tapatalk

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


  В 04.03.2021 в 17:57, pimur сказав:

Работает. Нужно куда то кликнуть или Тап после выбора. То есть в мобильном события происходит, когда вы выбрали и убрали фокус с поля.
 

Expand  

Не работает на мобиле! Модули доставок (СДЭК и Почта России) не перезагружаются...

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


  В 04.03.2021 в 23:50, Skiffjkee сказав:
Не работает на мобиле! Модули доставок (СДЭК и Почта России) не перезагружаются...
Доступы в личку. Посмотрю в течении пару дней.

Отправлено с моего Redmi Note 9 Pro через Tapatalk

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


Всем привет.

Стоит модуль Simple регистрация и чекаут.
Настроить DaData на роуте checkout/simplecheckout и account/simpleregister удалось.
По инструкции все сделал, работают все подсказки, все как следует.

Но никак не получается завести DaData в личном кабинете но роутах account/simpleedit и account/simpleaddress/update

Для примера на account/simpleaddress/update стоит код из третьего спойлера ниже.
Макет для него создал (для всех роутов делал отдельный макет).
Селекторы я поменял на свои. Во всех роутах они разные, поменял для каждого нужный.
Все коды вызова из Simple ниже.


Кто что может подсказать ? Что нужно сделать, чтобы запустить его ?

if('checkout_simplecheckout' in window) checkout_simplecheckout();
if('account_simpleaddress/update ' in window) account_simpleaddress/update ();
if('account_simpleedit' in window) account_simpleedit();
if('account_simpleregister' in window) account_simpleregister();


  

  Показати вміст

 

  Показати вміст

 

  Показати вміст

 

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


@Starychenko дайте ссылку на сайт, что-бы мы смогли вам помочь. можно ив личку.

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

  В 18.03.2021 в 17:30, dantes011 сказав:

Подскажите с чем связана такая ошибка

 

Screenshot_1.png

Expand  

Проверьте настройки ftp.
или обновите страницу что-бы проверить не прервалась ли сессия.

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

  • 1 month later...
  В 24.04.2021 в 17:39, Seax сказав:

Как сделать так, чтобы при выборе подсказки фокус не оставался внутри ввода информации?

Expand  

например, средствами js перевести фокус на следующее поле.

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

Подскажите, какой код и куда вставить?

// Ваш api ключ из лк дадаты https://dadata.ru/#registration_popup
var token = "тут токен"
// Для блока адресс
function checkAddress($city, $address, $postcode, $region) {
    // Если инпут города нету выходим
    if (!$city.length) return;
    var type = 'ADDRESS';
    $city.suggestions({
        token: token,
        type: type,
        bounds: "city-settlement",
        /*geoLocation: false,*/
      	geoLocation: [{"kladr_id": "50"}, {"kladr_id": "77"}],
        onSelect: enforceCity,
        onSelectNothing: enforceCity,
        formatSelected: formatCitySelected
    });

    $address.suggestions({
        token: token,
        type: type,
        onSelect: restrictAddressValue,
        formatSelected: formatSelected
    });

    // Если на поле адрес есть перезагрузка поля
    var p = $postcode.val() || "";
    var a = $address.val() || "";

    $city.on("suggestions-fixdata",
      function(e, suggestion) {
        // console.log(suggestion);
        $address.val(a);
      	$postcode.val(p)
      }
    );

    $city.suggestions().fixData();

    function setConstraints(sgt, kladr_id) {
        var restrict_value = false;
        var locations = null;
        if (kladr_id) {
            locations = {
                kladr_id: kladr_id
            };
            restrict_value = true;
        }
        sgt.setOptions({
            constraints: {
                locations: locations
            },
            restrict_value: restrict_value
        });
    }

    function enforceCity(suggestion) {
        var sgt = $address.suggestions();
        sgt.clear();
        if (suggestion) {
            setConstraints(sgt, suggestion.data.kladr_id);
            formatRegion(suggestion.data);
        } else {
            setConstraints(sgt, null);
        }
    }

    function formatCitySelected(suggestion) {
        var address = suggestion.data;
        if (address.city_with_type === address.region_with_type) {
            return address.settlement || address.city || "";
        } else {
            return join([
                address.city,
                address.settlement
            ]);
        }
    }

    function formatRegion(address) {
        $postcode.val(address.postal_code || '');
        if ($region.length) {
            var result = address.region.replace(/\s{0,1}[-\/].+/gi, '').toLowerCase();
            $region.find('option').each(function (i, o) {
                if ($(o).text().toLowerCase().search(result) >= 0) $(this).attr('selected', true);
                else $(this).attr('selected', false);
            });
        }
    }

    function restrictAddressValue(suggestion) {
        var citySgt = $city.suggestions();
        var addressSgt = $address.suggestions();
        if (!citySgt.currentValue) {
            citySgt.setSuggestion(suggestion);
            var city_kladr_id = suggestion.data.kladr_id.substr(0, 13);
            setConstraints(addressSgt, city_kladr_id);
        }
    }

    function formatSelected(suggestion) {
        var addressValue = makeAddressString(suggestion.data);
        return addressValue;
    }

    function makeAddressString(address) {
        formatRegion(address);

        /*return join([
            address.city_district_with_type,
          	address.street_with_type,
            join([address.house_type, address.house,
                address.block_type, address.block
            ], " "),
            join([address.flat_type, address.flat], " ")
        ]);*/
    }

    function join(arr /*, separator */ ) {
        var separator = arguments.length > 1 ? arguments[1] : ", ";
        return arr.filter(function (n) {
            return n
        }).join(separator);
    }
}
// Для блока адресс берем в переменные нужные инпуты
var $city = $('#shipping_address_city');
var $address = $('#shipping_address_address_1');
var $postcode = $('#shipping_address_postcode');
var $zoneId = $('#shipping_address_zone_id');
// Для блока адресс вызов
checkAddress($city, $address, $postcode, $zoneId);

Спасибо!

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


Здесь в зависимости от потребности зачем вам снимать фокус

можно, например, по событию suggestion onSelectNothing: выполнить элемент.blur();

 

можно, как писал выше определить следующий input и перевести на него фокус input.focus();

 

если Вы это сделать хотите для того, что-бы обновилась simple то лучше воспользоваться одним из событий/колбеков  https://confluence.hflabs.ru/pages/viewpage.action?pageId=207454320 

или что-бы принудительно обновить simple у него есть метод reloadAll()

 

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

  В 24.04.2021 в 19:42, Sha сказав:

Здесь в зависимости от потребности зачем вам снимать фокус

можно, например, по событию suggestion onSelectNothing: выполнить элемент.blur();

 

можно, как писал выше определить следующий input и перевести на него фокус input.focus();

 

если Вы это сделать хотите для того, что-бы обновилась simple то лучше воспользоваться одним из событий/колбеков  https://confluence.hflabs.ru/pages/viewpage.action?pageId=207454320 

или что-бы принудительно обновить simple у него есть метод reloadAll()

 

Expand  

Да. Спасибо за совет! Воспользовался reloadAll()

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


  • 1 month later...

Добрый день!

Писал в личку, на всякий случай продублирую здесь:

 

 

 

Планирую купить Ваш модуль, чтобы:

1. Уменьшить количество ошибок ввода адресов пользователей с последующим некорректным расчетом (или его отсутствием) модулей СДЭК [Доставка] (https://docs.lutylab.ru/ll_cdek)

2. Уменьшить количество полей на заполнение

 

Вопросы:

1. Совместим ли с Lightshop (OC2.3.0.2)?

2. Совместим ли с указанным выше модулем доставки СДЭК?

3. Что входит в услугу настройки?

Спасибо

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


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

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

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

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

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

Вхід

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

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

Important Information

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