Полный список доступных опций

Конфигурация Cleave.js строится вокруг единого объекта настроек, который передаётся при инициализации экземпляра. Поведение форматирования определяется набором независимых, но комбинируемых параметров:

  • выбор режима форматирования (числа, телефон, дата, время, кредитная карта)
  • правила разбиения строки на блоки
  • разделители и маски
  • ограничения ввода
  • трансформации регистра
  • поведение префиксов и «сырых» значений
  • параметры нормализации и очистки данных
  • колбэки событий

Каждая группа опций активирует определённый слой логики, и в ряде случаев одни параметры исключают или переопределяют другие.


Числовое форматирование (numeral)

Режим чисел активируется опцией numeral: true и включает расширенный набор параметров:

numeral

Включает числовую обработку ввода с автоматическим форматированием.

numeralDecimalMark

Определяет символ десятичного разделителя.

  • . или , в зависимости от локали

numeralDecimalScale

Ограничивает количество знаков после запятой.

  • пример: 2 → максимум 0.00

numeralIntegerScale

Ограничивает количество цифр в целой части числа.

  • полезно для финансовых ограничений

numeralThousandsGroupStyle

Определяет стиль группировки разрядов:

  • thousand — классическая группировка 1 000 000
  • lakh — индийская система 10,00,000
  • wan — китайская система 1000-разрядной группировки

numeralPositiveOnly

Ограничивает ввод только положительными значениями.

stripLeadingZeroes

Удаляет ведущие нули:

  • 000123123

Префиксы и управление строкой

prefix

Добавляет фиксированный префикс к значению.

  • пример: валюты ($, )

signBeforePrefix

Определяет расположение знака перед префиксом.

  • -€100 vs €-100

tailPrefix

Перемещает префикс в конец строки.

  • используется в специфических UI-форматах

noImmediatePrefix

Запрещает автоматическое отображение префикса при пустом вводе.

  • префикс появляется только после ввода символов

rawValueTrimPrefix

Удаляет префикс из «сырых» данных (getRawValue()).


Форматирование по блокам (blocks + delimiters)

Механизм масок в Cleave.js основан на разбиении строки на фиксированные сегменты.

blocks

Определяет длину каждого сегмента:

blocks: [4, 4, 4, 4]

Пример: банковская карта 12345678123456781234 5678 1234 5678

delimiters

Определяет символы-разделители между блоками:

delimiters: [' ', ' ', ' ']

Количество разделителей обычно на 1 меньше количества блоков.

uppercase

Автоматически переводит ввод в верхний регистр.

lowercase

Принудительно приводит к нижнему регистру.

Важно: uppercase и lowercase не комбинируются одновременно — последний применённый параметр имеет приоритет.


Телефонные номера (phone)

Режим активируется через phone: true.

phoneRegionCode

Определяет региональную маску:

  • US
  • RU
  • GB
  • и другие ISO-коды стран

Форматирование подстраивается под стандарты номера страны.

пример логики

  • ввод: 89991234567
  • регион: RU
  • вывод: +7 (999) 123-45-67

ограничения

Телефонный режим переопределяет blocks и delimiters, если они заданы вручную.


Дата (date)

date

Активирует режим форматирования даты.

datePattern

Задаёт порядок компонентов даты:

datePattern: ['d', 'm', 'Y']

Варианты компонентов:

  • d — день
  • m — месяц
  • Y — год

dateMin / dateMax

Ограничивают допустимый диапазон дат.

  • dateMin: '2000-01-01'
  • dateMax: '2099-12-31'

Формат сравнения зависит от внутреннего парсинга библиотеки.


Время (time)

time

Активирует режим форматирования времени.

timePattern

Определяет структуру времени:

timePattern: ['h', 'm', 's']

или укороченный вариант:

timePattern: ['h', 'm']

timeFormat

Формат отображения:

  • 24 — 24-часовой формат
  • 12 — 12-часовой формат с AM/PM логикой

Кредитные карты

creditCard

Включает специализированное форматирование банковских карт.

Автоматически определяет тип карты по BIN-диапазону.

creditCardStrictMode

Ограничивает ввод только валидными паттернами известных карт.

onCreditCardTypeChanged

Колбэк изменения типа карты:

onCreditCardTypeChanged: function(type) {}

Типы могут включать:

  • visa
  • mastercard
  • amex
  • diners
  • discover

Текстовые трансформации

uppercase

Переводит весь ввод в верхний регистр.

lowercase

Переводит весь ввод в нижний регистр.

Поведение применяется на уровне каждого символа во время ввода, а не после завершения.


Поведение ввода и нормализация

delimiterLazyShow

Отложенное отображение разделителей до заполнения блока.

  • улучшает UX при вводе масок

swapHiddenInputData

Меняет местами отображаемое и скрытое значение при работе с hidden input.

rawValueTrimPrefix

Удаляет префикс из сырого значения.


Обработка ведущих нулей и очистка

stripLeadingZeroes

Удаляет ведущие нули во всех числовых режимах.

Пример:

  • 0004545

Особенно важно для:

  • финансовых данных
  • идентификаторов
  • телефонных номеров (частично)

Колбэки и реактивные события

onValueChanged

Основной обработчик изменения значения:

onValueChanged: function(e) {
    e.target.value
    e.target.rawValue
}

Позволяет отслеживать:

  • отформатированное значение
  • «сырое» значение без масок

Используется для синхронизации с состоянием приложения.


Взаимодействие опций и приоритеты

Поведение Cleave.js определяется приоритетами:

  1. Специализированные режимы (phone, date, time, creditCard)
  2. Числовой режим (numeral)
  3. Маски (blocks, delimiters)
  4. Текстовые трансформации (uppercase, lowercase)
  5. Пост-обработка (stripLeadingZeroes, rawValueTrimPrefix)

При конфликте параметров специализированные режимы всегда имеют приоритет над универсальными настройками.


Совместимость и ограничения комбинаций

Некоторые параметры не предназначены для совместного использования:

  • phone конфликтует с blocks и delimiters
  • date переопределяет ручные маски
  • creditCard игнорирует пользовательские блоки
  • numeral отключает произвольные маски символов

Логика построена таким образом, чтобы один активный режим полностью контролировал форматирование, снижая вероятность неконсистентного ввода.