Contact form 7 как сделать выбор диапазона дат?
Здравствуйте, может кто-то знает как сделать диапазон дат в контактной форме, то есть например выбор от 02.09.23 до 08.0923
Дополнительно:
https://developer.mozilla.org/ru/docs/Web/HTML/Ele...
Либо вешай плагин. Например https://github.com/qodesmith/datepicker
На клиенте и на сервере проверяй правильность ввода.
Ответы:
Установите и активируйте плагин DatePicker
Добавьте поле для выбора даты, используя следующий код в вашей форме
[date* your-date min:start_date max:end_date]
Здесь your-date - это имя поля, которое вы можете выбрать самостоятельно, min - это начальная дата диапазона, а max - это конечная дата диапазона. Замените start_date и end_date на даты вашего выбора
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В Contact Form 7 диапазон дат лучше делать двумя полями: дата начала и дата окончания. HTML5-поле
dateумеет выбрать одну дату, но не полноценный диапазон. Для простого варианта можно поставить два поля и проверить, что дата окончания не раньше даты начала.Форма:
[date* date_from class:js-date-from] [date* date_to class:js-date-to]
Клиентская проверка:
document.addEventListener('change', function () { const from = document.querySelector('.js-date-from'); const to = document.querySelector('.js-date-to'); if (from && to && from.value) { to.min = from.value; } });document.addEventListener('change', function () { const from = document.querySelector('.js-date-from'); const to = document.querySelector('.js-date-to'); if (from && to && from.value) { to.min = from.value; } });
Но одной клиентской проверки мало. Пользователь может отправить форму вручную, поэтому добавьте серверную валидацию CF7:
add_filter('wpcf7_validate_date*', function ($result, $tag) { $from = $_POST['date_from'] ?? ''; $to = $_POST['date_to'] ?? ''; if ($from && $to && strtotime($to) < strtotime($from)) { $result->invalidate($tag, 'Дата окончания не может быть раньше даты начала.'); } return $result; }, 20, 2);
Если нужен красивый календарь именно с выделением диапазона, берите flatpickr с mode
range. Тогда на фронте будет одно поле, но перед отправкой удобно разложить выбранный диапазон на две скрытые даты. Для заявок и бронирования это надёжнее, чем пытаться заставить стандартное HTML5 date-поле работать как range-picker.В письме Contact Form 7 выводите обе даты отдельно:
[date_from]и[date_to]. Если используете один range-picker, который возвращает строку вроде02.09.2026 to 08.09.2026, её всё равно лучше разобрать перед отправкой и положить в два hidden-поля. Так проще проверять диапазон, считать количество дней и передавать данные в CRM.