Чек-бокс отправки сообщений

WYSIWYG Web Builder, вопросы которые не охвачены в других разделах.
Правила форума
1. Название темы должно кратко описывать суть вашего вопроса, темы типа: "Помогите", "Почему", "Что это", "Что-то глючит" - будут удаляться.
2. Задавая свой вопрос, постарайтесь предоставить максимум информации о проблеме, если есть возможность, приложите шаблон проекта *.wtp.
Подробнее: Правила создания новых тем и ответов на существующие темы.
Данный форум - это место обсуждения вопроса, а не техподдержка в классическом смысле. Все участники форума Web Builder по-русски с удовольствием вам помогут, если это будет в их силах.
Ответить
Аватара пользователя

Автор Темы
semyonl
Подающий надежды
Подающий надежды
Сообщения: 123
Зарегистрирован: 05 авг 2016, 07:27
Версия Web Builder: 11.2

Чек-бокс отправки сообщений

Сообщение semyonl » 01 апр 2026, 11:03

Привет. Как сделать чтобы неподтвержденный чек-бокс блокировал отправку формы?

Реклама
Аватара пользователя

serega
Продвинутый
Продвинутый
Сообщения: 317
Зарегистрирован: 12 фев 2012, 06:42
Версия Web Builder: 14.2.2
Имя: Сергей
Контактная информация:

Чек-бокс отправки сообщений

Сообщение serega » 05 апр 2026, 18:59

способов куча в любой секте :

✅ Способ 1: HTML‑валидация (самый простой)
Если ты используешь обычный <input type="checkbox">, просто добавь атрибут required.

Код: Выделить всё

<form>
  <label>
    <input type="checkbox" id="agree" required>
    Я согласен с условиями
  </label>

  <button type="submit">Отправить</button>
</form>

Браузер сам заблокирует отправку формы, пока чекбокс не отмечен.

✅ Способ 2: Блокировка кнопки через JavaScript
Если хочешь, чтобы кнопка была неактивной, пока чекбокс не отмечен:

Код: Выделить всё

<form id="myForm">
  <label>
    <input type="checkbox" id="agree">
    Я согласен с условиями
  </label>

  <button type="submit" id="submitBtn" disabled>Отправить</button>
</form>


Код: Выделить всё

<script>
  const checkbox = document.getElementById('agree');
  const button = document.getElementById('submitBtn');

  checkbox.addEventListener('change', () => {
    button.disabled = !checkbox.checked;
  });
</script>


✅ Способ 3: Проверка при отправке формы
Если нужно именно запретить отправку, а не блокировать кнопку:

Код: Выделить всё

<form id="myForm">
  <label>
    <input type="checkbox" id="agree">
    Я согласен с условиями
  </label>

  <button type="submit">Отправить</button>
</form>


Код: Выделить всё

<script>
  document.getElementById('myForm').addEventListener('submit', function(e) {
    if (!document.getElementById('agree').checked) {
      e.preventDefault();
      alert('Поставьте галочку, чтобы продолжить');
    }
  });
</script>


Отправлено спустя 2 минуты 53 секунды:
✅ Способ 4: самый жосткий : скрытие кнопки через dispaly: none

Код: Выделить всё

<form id="myForm">
  <label>
    <input type="checkbox" id="agree">
    Я согласен с условиями
  </label>

  <button type="submit" id="submitBtn" style="display: none;">
    Отправить
  </button>
</form>

<script>
  const checkbox = document.getElementById('agree');
  const button = document.getElementById('submitBtn');

  checkbox.addEventListener('change', () => {
    if (checkbox.checked) {
      button.style.display = 'block';   // показать кнопку
    } else {
      button.style.display = 'none';    // скрыть кнопку
    }
  });
</script>


Отправлено спустя 14 минут 57 секунд:
✅ Способ 5: Если подключишь Alpine , на 7 кб. Все кратко. Для этого и придуман

Код: Выделить всё

<div x-data="{ agree: false }">
    <label>
        <input type="checkbox" x-model="agree">
        Я согласен с условиями
    </label>

    <button
        type="submit" x-show="agree" x-transition x-cloak >
        Отправить
    </button>
</div>

Получается без JS .
x-cloak -- если все-таки кнопка успеет показаться, мигнет, то надо прописать сразу style="display: none;". Браузер быстрее, чем подключается Alpine .
x-transition уже чего-то анимирует и так, по минимуму.
Но можно расширить

Код: Выделить всё

        x-transition:enter.duration.300ms
        x-transition:leave.duration.300ms
        x-transition.opacity
        x-transition.scale.90


Ответить

Вернуться в «Общие вопросы.»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость