Как ограничить отправку формы в Тильде без выбора адреса из подсказок Дадаты

    Многие владельцы сайтов на Tilda сталкиваются с ситуацией, когда пользователи игнорируют выпадающие подсказки сервиса DaData и вводят адрес вручную или отправляют мусор. Это приводит к невалидным заказам и потере времени. Разберём технические способы принудительной валидации поля «Адрес доставки» - от простого скрытого ID до проверки через API.

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

    Подсказки DaData работают корректно, но часть клиентов:

    • использует автозаполнение браузера;
    • не замечает выпадающий список;
    • вводит адрес на слух (например, «дом 5, кв 3» без улицы);
    • намеренно отправляет некорректные данные.

    Чтобы исключить такие случаи, нужно внедрить дополнительную проверку на стороне клиента (JavaScript) и сервера.

    Метод 1: Скрытое поле с уникальным идентификатором адреса

    Самый надёжный способ - привязать выбор адреса к скрытому полю. При интеграции подсказок DaData в Tilda через Zero Block (HTML-код) добавьте:

    <input type="hidden" id="address_id" name="address_id" value="">

    В обработчике события onSelect подсказок присваивайте этому полю уникальный идентификатор (например, код КЛАДР или ФИАС). Если поле остаётся пустым - форма не отправляется.

    Пример кода для Tilda

    var token = 'ВАШ_ТОКЕН_DADATA';
    var type = 'address';
    $('#delivery_address').suggestions({
        token: token,
        type: type,
        onSelect: function(suggestion) {
            $('#address_id').val(suggestion.data.fias_id);
            $('#city_hidden').val(suggestion.data.city);
        }
    });
    // Блокировка отправки
    $('#my_form').on('submit', function(e) {
        if ($('#address_id').val() === '') {
            e.preventDefault();
            alert('Пожалуйста, выберите адрес из подсказок');
        }
    });

    Метод 2: Проверка уровня города через DaData API

    Если достаточно контролировать хотя бы город, можно реализовать валидацию по полю city из ответа DaData. При выборе адреса сохраняйте город в скрытое поле, а при отправке формы проверяйте его наличие.

    В Tilda это делается через Zero Block или стандартную форму с добавлением кастомного JS через блок T123.

    Метод 3: Использование готовых решений (Tilda + DaData)

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

    • Dadata Tilda Plugin - настройка через Zero Block с автоматической валидацией;
    • Сервис Webflow или Tilda API - для отправки данных на свой бэкенд с проверкой.

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

    Как защитить форму от обхода проверки

    Хакеры или опытные пользователи могут открыть DevTools и удалить атрибут disabled у кнопки или изменить значение скрытого поля. Поэтому:

    • всегда дублируйте валидацию на сервере (через API DaData);
    • используйте капчу (Google reCAPTCHA v3) для дополнительной защиты;
    • логируйте попытки отправки с пустыми скрытыми полями.

    Пошаговая инструкция для Tilda

    1. Установите Zero Block и вставьте HTML-код поля ввода с подсказками DaData.
    2. Добавьте скрытое поле address_id.
    3. Пропишите JavaScript-обработчик на выбор адреса.
    4. Добавьте проверку на событие submit.
    5. Протестируйте форму в режиме предпросмотра.

    После внедрения проверки процент «мусорных» заказов снизится до минимума, а менеджеры будут получать только корректные адреса доставки.

    Часто задаваемые вопросы