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

Перезагрузка блоков не работает на Iphone


Recommended Posts

Всем привет, столкнулся с такой особенностью.

Стоит симпл и автозаполнение полей dadata, когда прописываю город или изменяю, происходит перезагрузка полей (обновляются расчеты доставок). На компе и андроиде все работает отлично, но на айфонах перезагрузка не происходит. Если отключить модуль dadata, то и на айфоне все отлично работает...

 

Возможно кто то сможет подсказать, почему огрызок капризничает?

 

Код dadata

// Ваш 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,
        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.data !== undefined && suggestion.data.kladr_id !== undefined) {
            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
            ]);
        }
    }
var REGION_MAPPING = {
  "2200000000000": "2726", // Алтайский край
  "2800000000000": "2729", // Амурская обл
  "2900000000000": "2724", // Архангельская обл
  "3000000000000": "2725", // Астраханская обл
  "9900000000000": "4232", // г Байконур
  "3100000000000": "2727", // Белгородская обл
  "3200000000000": "2730", // Брянская обл
  "3300000000000": "2799", // Владимирская обл
  "3400000000000": "2801", // Волгоградская обл
  "3500000000000": "2802", // Вологодская обл
  "3600000000000": "2803", // Воронежская обл
  "7900000000000": "2728", // Еврейская Аобл
  "7500000000000": "2722", // Забайкальский край
  "3700000000000": "2741", // Ивановская обл
  "3800000000000": "2740", // Иркутская обл
  "3900000000000": "2743", // Калининградская обл
  "4000000000000": "2744", // Калужская обл
  "4100000000000": "2775", // Камчатский край
  "0900000000000": "2733", // Респ Карачаево-Черкесская
  "4200000000000": "2747", // Кемеровская область - Кузбасс
  "4300000000000": "2804", // Кировская обл
  "1100000000000": "2787", // Респ Коми
  "4400000000000": "2750", // Костромская обл
  "2300000000000": "2745", // Краснодарский край
  "2400000000000": "2752", // Красноярский край
  "9100000000000": "4233", // Респ Крым
  "4500000000000": "2754", // Курганская обл	
  "4600000000000": "2755", // Курская обл
  "4700000000000": "2791", // Ленинградская обл
  "4800000000000": "2757", // Липецкая обл
  "4900000000000": "2758", // Магаданская обл
  "7700000000000": "2761", // г Москва
  "5000000000000": "2751", // Московская обл
  "5100000000000": "2762", // Мурманская обл
  "8300000000000": "2764", // Ненецкий АО
  "5200000000000": "2766", // Нижегородская обл
  "5300000000000": "2767", // Новгородская обл
  "5400000000000": "2768", // Новосибирская обл
  "5500000000000": "2769", // Омская обл
  "5600000000000": "2771", // Оренбургская обл
  "5700000000000": "2770", // Орловская обл
  "5800000000000": "2773", // Пензенская обл
  "5900000000000": "2774", // Пермский край
  "2500000000000": "2800", // Приморский край
  "6000000000000": "2777", // Псковская обл
  "1400000000000": "2805", // Респ Саха /Якутия/
  "0100000000000": "2760", // Респ Адыгея
  "0400000000000": "2738", // Респ Алтай
  "0200000000000": "2794", // Респ Башкортостан
  "0300000000000": "2796", // Респ Бурятия
  "0500000000000": "2759", // Респ Дагестан
  "0600000000000": "2765", // Респ Ингушетия
  "0700000000000": "2763", // Респ Кабардино-Балкарская
  "0800000000000": "2736", // Респ Калмыкия
  "1000000000000": "2776", // Респ Карелия
  "1200000000000": "2808", // Респ Марий Эл
  "1300000000000": "2782", // Респ Мордовия
  "1500000000000": "2798", // Респ Северная Осетия - Алания
  "1600000000000": "2746", // Респ Татарстан
  "1700000000000": "2756", // Респ Тыва
  "1900000000000": "2721", // Респ Хакасия
  "6100000000000": "2778", // Ростовская обл
  "6200000000000": "2779", // Рязанская обл
  "6300000000000": "2781", // Самарская обл
  "7800000000000": "2785", // г Санкт-Петербург
  "6400000000000": "2783", // Саратовская обл
  "6500000000000": "4234", // Сахалинская обл
  "6600000000000": "2807", // Свердловская обл
  "9200000000000": "4235", // г Севастополь
  "6700000000000": "2784", // Смоленская обл
  "2600000000000": "2786", // Ставропольский край
  "6800000000000": "2788", // Тамбовская обл
  "6900000000000": "2792", // Тверская обл
  "7000000000000": "2789", // Томская обл
  "7100000000000": "2790", // Тульская обл
  "7200000000000": "2793", // Тюменская обл
  "1800000000000": "2742", // Респ Удмуртская
  "7300000000000": "2795", // Ульяновская обл
  "2700000000000": "2748", // Хабаровский край
  "8600000000000": "2749", // Ханты-Мансийский Автономный округ - Югра
  "7400000000000": "2732", // Челябинская обл
  "2000000000000": "2739", // Респ Чеченская
  "2100000000000": "2731", // Чувашская Республика - Чувашия
  "8700000000000": "2723", // Чукотский АО
  "8900000000000": "2780", // Ямало-Ненецкий АО
  "7600000000000": "2806", // Ярославская обл
  
};
    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);
    }
    }

    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.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);

// Для блока имени, фамилия
function initName($surname, $name) {
    // Если инпута фамилия или имя нету, выходим
    if (!$surname.length || !$name.length) return;
    $surname.suggestions({
            token: token,
            type: "NAME",
            triggerSelectOnSpace: false,
            hint: "",
            noCache: true,
            params: {
                // каждому полю --- соответствующая подсказка
                parts: ['SURNAME']
            }
        });
  	$name.suggestions({
            token: token,
            type: "NAME",
            triggerSelectOnSpace: false,
            hint: "",
            noCache: true,
            params: {
                // каждому полю --- соответствующая подсказка
                parts: ['NAME', 'PATRONYMIC']
            }
        });
};
// Для блока имени, фамилия вызов
var $surname = $("#shipping_address_lastname");
var $name = $("#shipping_address_firstname");

initName($surname, $name);

// Для блока email с проверкой есть ли данный инпут
var $email = $("#customer_email");
if ($email.length) {
    $email.suggestions({
        token: token,
        type: "EMAIL",
    });
}

 

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


Была аналогичная задача, Simple и несколько связанных полей с дадатой (адрес с разбивкой по полям).
Долго пытался заставить нормально работать связанные поля, у меня не особо получилось.
В простой странице все ок, а в перезагрузке по аяксу - связка отваливается.
Использовал FixData, пробовал по всякому..
В итоге оставил одно поле полного адреса.
Может у кого-то получилось, было бы тоже интересно узнать метод.

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

  • 1 month later...
  • 2 months later...

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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