Внутренний API Inputmask и публичные методы библиотеки оперируют ограниченным, но строго определённым набором типов возвращаемых значений. Это сделано для унификации поведения масок в разных окружениях (браузер, jQuery, vanilla JS, framework-обёртки) и для предсказуемой интеграции с формами, валидацией и внешними обработчиками.
Основной поток данных в Inputmask связан с преобразованием пользовательского ввода в структурированные формы представления: отображаемое значение, «сырое» значение без маски, метаданные маски, а также результаты проверок. Каждый из этих потоков возвращает данные в строго определённых типах, которые важно различать при построении логики обработки ввода.
Наиболее часто используемый тип возвращаемого значения в Inputmask — строка. Почти все методы, связанные с извлечением данных из поля ввода, возвращают именно строку, независимо от того, содержит ли она числовые данные, даты или смешанные форматы.
Ключевые методы, возвращающие строки:
inputmask.unmaskedvalue()inputmask.getmaskedvalue()inputmask.format(value)inputmask.remove() (в некоторых режимах возвращает
предыдущее значение как строку)Строковое значение используется в трёх основных вариантах:
Форматированное значение (masked value) Представляет собой текст, уже приведённый к маске. Например:
+7 (999) 123-45-67Неформатированное значение (unmasked value) Возвращает только значимые символы без маскирующих элементов:
79991234567Частично заполненные значения При неполном вводе
возвращается строка с заполненными и незаполненными позициями, зависящая
от конфигурации clearIncomplete.
Строковый тип выбран как основной, потому что DOM input всегда оперирует строками, а Inputmask лишь трансформирует их представление.
Второй важный тип возвращаемых значений — boolean. Он
используется в методах проверки корректности введённых данных.
Основные методы:
inputmask.isValid(value)inputmask.isComplete()inputmask.isValidBuffer() (внутренние версии)Булев результат отражает состояние соответствия введённого значения маске.
Типичные сценарии:
true — значение полностью соответствует маске и
правиламfalse — есть нарушение структуры или обязательных
сегментовОсобенность Inputmask заключается в том, что валидность определяется не только форматом, но и состоянием заполненности. Например, частично введённый номер телефона может быть формально корректным по символам, но не считаться «complete».
Inputmask активно использует объекты для передачи сложных структур данных, особенно при работе с конфигурацией, метаданными и внутренним состоянием маски.
Методы инициализации и настройки возвращают объект Inputmask или расширенный экземпляр:
Inputmask(options)element.inputmaskВозвращаемый объект содержит:
opts)masksetНекоторые методы возвращают структурированные объекты:
inputmask.getmetadata()Пример структуры:
{
mask: "+7 (999) 999-99-99",
definitions: { "9": { validator: "[0-9]" } },
placeholder: "_"
}
Эти данные используются для анализа маски, генерации UI-подсказок и динамической перестройки поведения.
Хотя напрямую редко используется в прикладном коде,
maskset представляет собой сложный объект, описывающий:
Он всегда возвращается как объект, но его структура считается внутренней и может изменяться между версиями.
Методы, которые изменяют состояние поля ввода, часто возвращают
undefined или сам экземпляр Inputmask для поддержки цепочек
вызовов.
inputmask.setValue(value) → undefined или
Inputmaskinputmask.remove() → undefined$(selector).inputmask(...) → jQuery-цепочка (jQuery
object)Это поведение соответствует принципу «command vs query separation»: операции изменения состояния не обязаны возвращать данные.
Inputmask сам по себе редко возвращает числа напрямую, поскольку работает на уровне строк DOM. Однако числовые значения могут появляться в двух сценариях:
Преобразование unmasked value в число вручную:
Number(inputmask.unmaskedvalue())Использование alias’ов (numeric,
currency), где внутренние расчёты ведутся в числовом виде,
но наружу всё равно отдаётся строка.
Таким образом, числовой тип не является нативным выходным типом API, а возникает как результат внешней интерпретации.
Некоторые методы могут возвращать null или эквивалент
пустого значения в зависимости от конфигурации:
clearMaskOnLostFocusНа практике Inputmask предпочитает возвращать пустую строку
"", а не null, чтобы сохранить совместимость с
DOM API.
Внутренне Inputmask использует буферы (buffer), которые представляют собой массив символов маски. Однако наружу они могут возвращаться в двух формах:
Буфер описывает текущее состояние ввода:
["+","7"," ","(","9","9","9", ...]
Этот формат используется для пошаговой сборки значения и обработки каретки.
Inputmask поддерживает множество callback-функций, и их возвращаемые значения обычно игнорируются библиотекой.
Примеры:
oncompleteonincompleteonclearedonBeforeMaskТип возвращаемого значения здесь не фиксирован:
undefined — наиболее частый случайboolean — иногда используется для отмены операции
(например, в onBeforeMask)string — может использоваться для трансформации
входаОсобенно важно поведение функций-перехватчиков: если callback возвращает строку, она может быть использована как новое значение для маски.
При инициализации Inputmask часто возвращается сам экземпляр, что позволяет строить цепочки:
Тип возвращаемого значения в этом случае — объект класса Inputmask, содержащий весь публичный API.
Это обеспечивает единый интерфейс управления без необходимости повторного обращения к DOM-элементу.
В рамках всей библиотеки можно выделить устойчивую систему типов:
string — основной тип данных ввода и выводаboolean — результаты проверок и валидацииobject — конфигурации, maskset, экземплярыundefined — операции изменения состоянияarray (ограниченно) — буферы и внутренние
структурыnumber (косвенно) — через внешние преобразованияЭта типизация формирует предсказуемую модель поведения, в которой Inputmask всегда остаётся на уровне строкового представления данных, а более сложные типы используются только для управления и внутренней логики обработки маски.