Как определить какой блок используется на сайте Тильда? →

New! Новый тип поля «Запоминание контактных данные» в Тильде

В Тильде появилась возможность сделать "запоминание данных" без вставки кода

Если по какой-то причине вам не подойдёт вариант из Тильды, то воспользуйтесь кодом ниже.

Главная страница — Сохранять данные из полей корзины в Тильде и заполнять повторно

Сохранять данные из полей корзины в Тильде и заполнять повторно

Проблема
Каждый раз, когда человек делал повторный заказ в интернет-магазине, построенном на Тильде, были автоматически заполнены основные поля (имя, телефон, электронная почта и пр.) при оформлении заказа.
Данный код нужно указать в блок (Другое ⟶ T123 ⟶ HTML-код)

<!-- Код для запоминания данных введённых в корзине -->
<!-- https://roman-kosov.ru/autocomplete-tilda-cart -->

<script>
$(document).ready(function () {
    setTimeout(function () {
        $(".js-form-proccess").each(function (i, cart) {
            var $cart = $(cart);
            var cartSuccessCallback = $cart.data("formsended-callback");

            var cachedCallback = window[cartSuccessCallback];
            var acTildaCartSave = {};
            window[cartSuccessCallback] = (function () {
                return function () {
                    if (window.tcart.promocode && window.tcart.promocode.promocode) {
                        acTildaCartSave['acTildaCart-promocode'] = window.tcart.promocode.promocode;
                    }
                    $($cart.serializeArray()).each(function (i, el) {
                        if (el.name.indexOf("form-spec-") === -1 && (el.name.indexOf("tildaspec-") === -1 || el.name === "tildaspec-phone-part[]") && el.name.indexOf("formservices") === -1) {
                            if (el.value !== "") {
                                acTildaCartSave[el.name] = el.value;
                            }
                        }
                    });
                    localStorage.setItem('acTildaCart', JSON.stringify(acTildaCartSave));
                    return cachedCallback($cart);
                };
            })();

            /* Recovery fields */
            var acTildaCartRecovery = localStorage.getItem('acTildaCart') || {};
            try {
                acTildaCartRecovery = JSON.parse(acTildaCartRecovery);
                Object.keys(acTildaCartRecovery).forEach(function (name) {
                    if (name === "tildaspec-phone-part[]") {
                        setTimeout(function () {
                            $('[name="tildaspec-phone-part[]"]').val(acTildaCartRecovery[name]);
                            $('.t-input-phonemask').trigger('input');
                        }, 1000);
                    } else if (name === 'acTildaCart-promocode') {
                        $('.t-inputpromocode').val(acTildaCartRecovery[name]);
                        $('.t-inputpromocode__btn').trigger('click');
                    } else {
                        $('[name="' + name + '"]:not([type="radio"])').val(acTildaCartRecovery[name]);
                        try {
                            $('[type="radio"][value="' + acTildaCartRecovery[name] + '"]').prop("checked", true);
                        } catch (e) {}
                    }
                });
            } catch (e) {}
        });
    }, 500);
});
</script>

Посмотреть как работает:

!
Нажмите «Купить» тестовый товар, после появления корзины заполните поля, нажмите отправить, страница обновится — на вновь открой странице нажмите ещё раз «Купить», появится опять корзина, но с уже заполненными раннее данными
Тестовый товар
Форма из корзины никуда не отправляет данные
1000
3200
Click to order

Похожее по теме «Заполнение полей формы в Тильде»

Жду ваш честный фидбэк ;)