Маски для дат и времени в библиотеке Inputmask используются для ограничения пользовательского ввода по заранее определённому формату. Такие маски позволяют:
Типичные сценарии:
Простейший вариант маски даты:
<input id="date">
Inputmask("99.99.9999").mask("#date");
Результат:
12.05.2026
| Символ | Назначение |
|---|---|
9 |
обязательная цифра |
. |
фиксированный разделитель |
Маска требует:
Вместо ручного шаблона библиотека поддерживает готовые алиасы.
Пример:
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy"
}).mask("#date");
Готовый alias:
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy"
}).mask("#date");
Пример:
31.12.2026
Inputmask("datetime", {
inputFormat: "mm/dd/yyyy"
}).mask("#date");
Пример:
12/31/2026
Inputmask("datetime", {
inputFormat: "yyyy-mm-dd"
}).mask("#date");
Пример:
2026-12-31
ISO-формат часто используется:
Inputmask("datetime", {
inputFormat: "HH:MM"
}).mask("#time");
Пример:
23:45
| Элемент | Значение |
|---|---|
HH |
часы |
MM |
минуты |
Inputmask("datetime", {
inputFormat: "HH:MM:ss"
}).mask("#time");
Пример:
18:22:09
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy HH:MM"
}).mask("#datetime");
Пример:
15.08.2026 14:30
Такой формат часто применяется:
Inputmask автоматически добавляет:
Код:
Inputmask("datetime", {
inputFormat: "dd/mm/yyyy"
}).mask("#date");
При вводе:
12052026
поле автоматически преобразуется в:
12/05/2026
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
placeholder: "_"
}).mask("#date");
Отображение:
__.__.____
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
placeholder: "д"
}).mask("#date");
Результат:
дд.дд.дддд
Параметр clearIncomplete удаляет частично введённое
значение.
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
clearIncomplete: true
}).mask("#date");
Если пользователь ввёл:
12.0
после потери фокуса поле очистится.
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
clearMaskOnLostFocus: true
}).mask("#date");
При потере фокуса незаполненные части исчезают.
До:
12.__.____
После:
12
Одно из главных преимуществ alias datetime — встроенная
проверка корректности даты.
Пример:
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy"
}).mask("#date");
Некорректные значения:
45.18.2026
99.99.9999
32.13.2026
не будут приняты библиотекой.
Inputmask корректно учитывает календарные правила.
Допустимо:
29.02.2024
Недопустимо:
29.02.2025
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
min: "01.01.2020"
}).mask("#date");
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
max: "31.12.2030"
}).mask("#date");
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
min: "01.01.2020",
max: "31.12.2030"
}).mask("#date");
Теперь ввод за пределами диапазона блокируется.
Inputmask("datetime", {
inputFormat: "hh:MM TT"
}).mask("#time");
Пример:
11:45 PM
| Формат | Описание |
|---|---|
hh |
часы 1–12 |
TT |
AM/PM |
Inputmask("datetime", {
inputFormat: "HH:MM"
}).mask("#time");
Пример:
22:10
Inputmask("datetime", {
inputFormat: "HH:MM:ss.l"
}).mask("#time");
Пример:
14:25:11.532
Inputmask("datetime", {
inputFormat: "mm/yyyy"
}).mask("#month");
Пример:
05/2026
Используется:
Inputmask("datetime", {
inputFormat: "yyyy"
}).mask("#year");
Пример:
2026
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
prefillYear: true
}).mask("#date");
При вводе:
12.05.26
библиотека может автоматически дополнить год.
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
showMaskOnHover: false,
showMaskOnFocus: true
}).mask("#date");
| Событие | Результат |
|---|---|
| hover | маска скрыта |
| focus | маска отображается |
Для мобильных устройств полезно указывать цифровую клавиатуру.
<input id="date" inputmode="numeric">
Совместно с маской:
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy"
}).mask("#date");
Inputmask корректно работает с paste-событиями.
Вставка:
12052026
автоматически преобразуется в:
12.05.2026
Библиотека:
Маски обычно применяются к:
<input type="text">
Использование:
<input type="date">
может конфликтовать с нативным поведением браузера.
Поэтому чаще применяется:
<input type="text" id="date">
Разные страны используют разные форматы даты.
dd.mm.yyyy
mm/dd/yyyy
yyyy-mm-dd
Inputmask позволяет легко переключать формат:
Inputmask("datetime", {
inputFormat: "yyyy-mm-dd"
}).mask("#date");
Некоторые форматы можно задавать сокращённо.
Inputmask({
alias: "datetime",
inputFormat: "dd/mm/yyyy"
}).mask("#date");
Inputmask("datetime", {
inputFormat: "HH:MM"
}).mask(".schedule-time");
Примеры:
08:00
12:30
19:45
Маска может применяться к новым элементам после загрузки страницы.
document.querySelectorAll(".date-field").forEach(el => {
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy"
}).mask(el);
});
Inputmask.remove("#date");
После удаления поле становится обычным input.
const im = document.querySelector("#date").inputmask;
console.log(im.isComplete());
Результат:
true
false
const value = document.querySelector("#date").inputmask.unmaskedvalue();
console.log(value);
Для даты:
12052026
const value = document.querySelector("#date").value;
console.log(value);
Результат:
12.05.2026
Событие полного заполнения маски:
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
oncomplete() {
console.log("Дата введена");
}
}).mask("#date");
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
onincomplete() {
console.log("Дата заполнена не полностью");
}
}).mask("#date");
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
oncleared() {
console.log("Поле очищено");
}
}).mask("#date");
<form id="form">
<input id="date">
<button>Отправить</button>
</form>
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy"
}).mask("#date");
document.querySelector("#form").addEventListener("submit", e => {
const field = document.querySelector("#date");
if (!field.inputmask.isComplete()) {
e.preventDefault();
}
});
Нежелательно:
Inputmask("99.99.9999")
Такой вариант:
Предпочтительно:
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy"
})
Ошибка:
HH:mm
В Inputmask:
MM — минуты;mm — месяц.Правильно:
HH:MM
Иногда браузерный autocomplete мешает работе маски.
Решение:
<input autocomplete="off">
<input id="booking-date">
<input id="booking-time">
Inputmask("datetime", {
inputFormat: "dd.mm.yyyy",
min: "01.01.2025",
max: "31.12.2030",
clearIncomplete: true
}).mask("#booking-date");
Inputmask("datetime", {
inputFormat: "HH:MM"
}).mask("#booking-time");
Поведение: