Вступление #

Маска для полей ввода, реализована на базе Imask.js.
Для работы маски можно использовать по умолчанию класс .js-mask.

Установка #

Пример разметки и инициализации маски.

    <input class="js-mask" type="text" placeholder="Введите номер телефона"/>
    BasicMask.init('.my-field');
    BasicMask.init(document.querySelector('.my-field'));
    BasicMask.init(document.querySelectorAll('.my-field'));

    // или

    BasicMask.init(); // по умолчанию инициализирует элементы с классом .js-mask

Если не устраивают текущие конфигурации, то можно самостоятельно указать настройки imask.js.

    BasicMask.options('#my-field', {
        mask: Number,
        min: -10000,
        max: 10000,
        thousandsSeparator: ' '
    });

Конфигурация #

Настройки, которые указываются при помощи специальных data-атрибутов.

data-mask-options #

В значениях указываются параметры для гибкой настройки маски.

mask #

Указывает тип маски.

Принимает следующие значения:

Название Тип Описание
default или phone string Маска для номеров телефона.
date string Маска для дат.
number string Маска для чисел.
currency string Маска для вывода суммы в читаемом виде(с символом валюты).

pattern #

Указывает шаблон маски, у каждого типа по умолчанию есть свои шаблоны, более подробно можно узнать из офиц.документации Imask.js.

Значения, которые используются по умолчанию:

Название Тип Описание
+{7}(000)000-00-00 string Относится к типу маски: default и phone(по умолчанию).
d{.}`m{.}`Y string Относится к типу маски: date.
Number string Относится к типу маски: number.
num ₽ string Относится к типу маски: currency.

pattern у даты работает только с доп.параметрами, поэтому
вместо атрибута data-mask-options можно использовать метод BasicMask.updateOptions(). Смотрите след.пример.

lazy #

Ленивый вывод маски.

Принимает следующие значения:

Название Тип Описание
true(по умолчанию) boolean Включает ленивый вывод маски, и показывает её только при вводе значения.
false boolean Отключает ленивый вывод маски и показывает её заранее.

min #

Указывает минимальное число.
Данный параметр поддерживают несколько типов маски: date и number.

Название Тип Маска Описание
2000,02,15 string date Минимальное значение для даты, указывается в формате YYYY,MM,DD. По умолчанию 1900, 0, 1.
-10 0000 string number Минимальное значение для числа, принимает в том числе отрицательные числа. По умолчанию 0.

max #

Указывает максимальное число.
Данный параметр поддерживают несколько типов маски: date, number и currency.

Название Тип Маска Описание
2023,02,15 string date Максимальное значение для даты, указывается в формате YYYY,MM,DD. По умолчанию 9999, 0, 1.
10 0000 string number/ currency Максимальное значение для чисел и сумм. По умолчанию 1000000000.

thousandsSeparator #

Разделитель для чисел. Принимает любое строковое значение.

format #

Преобразование даты в строку, на примере date pattern.

parse #

Преобразование cтроки в дату, противоположность format, на примере date pattern.

autofix #

Режим автоисправления. Принимает boolean значение, по умолчанию false;

date pattern #

Паттерн у даты работает с доп.параметрами: format и parse.

В данном примере, при помощи метода BasicMask.updateOptions() реализуем маску YYYY-MM-DD.

    <label for="field-date-pattern">
        <span class="name">Введите свой номер телефона</span>
        <input
            class="field"
            id="field-date-pattern"
            type="text"
            placeholder="ГОД-МЕСЯЦ-ДЕНЬ"
            data-mask-options='{ "mask": "date" }'>
    </label>
    BasicMask.updateOptions('#field-date-pattern', {
        'pattern': 'Y-`m-`d',
        'format': function (date) {

            let day   = date.getDate(),
                month = date.getMonth() + 1,
                year  = date.getFullYear();


            if (day < 10)   day = "0" + day;
            if (month < 10) month = "0" + month;

            return [year, month, day].join('-');

        },

        'parse': function (str) {

            let yearMonthDay = str.split('-');

            return new Date(yearMonthDay[0], yearMonthDay[1] - 1, yearMonthDay[2]);

        }
    });

Методы #

options() #

Инициализировать маску со своими параметрами.

    BasicMask.options(element, options);

где

Название Тип Описание
element object / string Поле, к которому необходимо будет применить маску.
options object Параметры маски(Imask.js).

updateOptions() #

Обновить или добавить параметры для маски.

    BasicMask.updateOptions(element, options);

где

Название Тип Описание
element object / string Поле, у которого необходимо обновить параметры маски. Поле необязательно должно быть инициализировано, метод может самостоятельно собрать маску и применить новые параметры.
options object Параметры маски, которые необходимо обновить/добавить. Принимает все параметры Imask.js.