В современных веб-формах часто требуется, чтобы пользователь явно подтвердил своё согласие на обработку персональных данных. Это не просто «best practice» — во многих странах (включая Россию по ФЗ-152 и Европу по GDPR) это юридическое обязательство.
Чтобы гарантировать такое согласие, разработчики делают кнопку отправки формы неактивной (
Механизм предельно прост:
Такой подход решает сразу несколько задач:
💡 Совет: всегда дублируйте проверку на сервере. Клиентский JavaScript можно обойти, но сервер — нет.
Такой паттерн используется повсеместно: от лендингов с «заказать звонок» до форм регистрации в SaaS-продуктах. Это маленькая деталь, которая делает интерфейс не только удобнее, но и юридически безопаснее.
disabled
), пока пользователь не поставит галочку в чекбоксе с текстом вроде: «Я согласен с политикой конфиденциальности».
Как это работает под капотом?
disabled
— её нельзя нажать.id
.change
) JavaScript проверяет: отмечен ли он.Почему это важно?
<!-- Форма заявки с защитой согласия -->
<form id="contactForm" method="post" action="/submit-form.php">
<div class="form-group">
<input type="text" name="name" placeholder="Ваше имя" required>
</div>
<div class="form-group">
<input type="tel" name="phone" placeholder="Телефон" required>
</div>
<div class="form-group">
<select name="city" required>
<option value="">Выберите город</option>
<option value="Москва">Москва</option>
<option value="Санкт-Петербург">СПб</option>
<option value="Екатеринбург">Екатеринбург</option>
</select>
</div>
<!-- Кнопка отправки. Изначально отключена -->
<button type="submit" id="submitBtn" class="btn" disabled>
Отправить заявку
</button>
<!-- Чекбокс согласия -->
<label class="consent-label">
<input type="checkbox" id="agreeCheckbox">
Нажимая «Отправить заявку», я даю согласие на обработку
<a href="/policy" target="_blank">персональных данных</a>
</label>
</form>
<!-- Скрипт активации кнопки -->
<script>
document.addEventListener('DOMContentLoaded', () => {
const checkbox = document.getElementById('agreeCheckbox');
const button = document.getElementById('submitBtn');
if (checkbox && button) {
checkbox.addEventListener('change', () => {
button.disabled = !checkbox.checked;
});
}
});
</script>
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!