Вступление #
Маска для полей ввода, реализована на базе 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. |