Flatpickr предоставляет гибкую систему управления доступностью дат
через параметр disable, который позволяет исключать
отдельные даты, диапазоны и даже сложные наборы правил. Механизм
отключения диапазонов дат является ключевым инструментом при построении
календарей бронирования, корпоративных систем планирования и любых
интерфейсов, где требуется строгий контроль допустимых значений
выбора.
В основе логики отключения лежит массив disable,
принимающий различные типы значений:
Для диапазонов используется объект с ключами from и
to, задающий интервал включительно:
{
from: "2026-01-10",
to: "2026-01-20"
}
Такой диапазон полностью исключает возможность выбора любой даты внутри указанного промежутка. Внутренний механизм Flatpickr проверяет каждую дату при рендеринге календаря и помечает её как недоступную.
Простейшая конфигурация отключения диапазона выглядит следующим образом:
flatpickr("#calendar", {
disable: [
{
from: "2026-02-01",
to: "2026-02-10"
}
]
});
В результате даты от 1 февраля 2026 до 10 февраля 2026 становятся недоступными для выбора. Такой подход применяется, например, при блокировке периода технического обслуживания или занятости ресурса.
Помимо строкового формата, диапазоны можно задавать через объекты
Date, что особенно важно при динамическом вычислении
границ:
flatpickr("#calendar", {
disable: [
{
from: new Date(2026, 1, 1),
to: new Date(2026, 1, 10)
}
]
});
Здесь необходимо учитывать, что месяцы в JavaScript нумеруются с
нуля, поэтому 1 соответствует февралю.
Flatpickr поддерживает комбинирование нескольких диапазонов в одном
массиве disable. Это позволяет строить сложные правила
блокировки:
flatpickr("#calendar", {
disable: [
{
from: "2026-03-01",
to: "2026-03-05"
},
{
from: "2026-03-10",
to: "2026-03-15"
}
]
});
Каждый диапазон обрабатывается независимо, а итоговая недоступность формируется объединением всех пересечений.
При пересечении диапазонов система не требует их предварительной нормализации. Например:
disable: [
{ from: "2026-04-01", to: "2026-04-10" },
{ from: "2026-04-05", to: "2026-04-15" }
]
Результирующая недоступная зона фактически покрывает весь интервал с 1 по 15 апреля. Flatpickr выполняет проверку каждой даты независимо, поэтому пересечения не влияют на корректность работы.
Часто требуется отключать как диапазоны, так и конкретные дни:
flatpickr("#calendar", {
disable: [
{
from: "2026-05-01",
to: "2026-05-10"
},
"2026-05-15",
"2026-05-20"
]
});
В этом случае библиотека объединяет правила разного типа в единую проверочную функцию.
Более гибкий способ управления отключением заключается в использовании функции:
flatpickr("#calendar", {
disable: [
function(date) {
const start = new Date(2026, 6, 1);
const end = new Date(2026, 6, 10);
return date >= start && date <= end;
}
]
});
Такой подход позволяет реализовать условия, которые невозможно выразить статическими диапазонами: зависимость от текущего времени, внешних данных или бизнес-логики.
Хотя основной механизм работает через disable, в
некоторых случаях проще задать разрешённые диапазоны через
enable. Однако при работе именно с исключениями диапазонов
предпочтение отдается disable, так как он лучше
масштабируется при большом количестве правил.
Границы from и to включаются в диапазон.
Это означает:
from считается недоступной датойto также считается недоступной датойПри необходимости исключить границы из блокировки используется смещение дат на один день:
{
from: "2026-06-02",
to: "2026-06-09"
}
где реальные границы вычисляются заранее с учётом бизнес-логики.
При использовании строковых дат Flatpickr приводит их к локальному контексту времени браузера. Это может влиять на поведение при переходах между днями в системах с различными часовыми поясами.
Для устранения неоднозначностей рекомендуется:
YYYY-MM-DDDate-объектыПри увеличении количества диапазонов отключения происходит линейная проверка каждой даты. В большинстве интерфейсов это не создаёт проблем, однако при сотнях правил может наблюдаться снижение производительности.
Оптимизации включают:
Отключение диапазонов используется в нескольких устойчивых моделях:
Каждый из этих сценариев опирается на одну и ту же базовую механику проверки попадания даты в диапазон, реализованную внутри Flatpickr.