В библиотеке Inputmask присутствует набор служебных методов,
предназначенных для получения текущего значения поля ввода в различных
представлениях — от визуально отформатированного до полностью «сырого»
значения без маски. Одним из таких методов является
getValue, который используется для извлечения актуального
содержимого инпута с учётом активной маски и её конфигурации.
Метод getValue ориентирован на получение значения,
которое находится в поле ввода в текущий момент времени. При этом
ключевая особенность заключается в том, что результат может зависеть от
параметров маски, включая режимы отображения и очистки данных.
В отличие от стандартного доступа к input.value, который
возвращает строку «как есть», метод из Inputmask учитывает внутреннее
состояние маскировщика: позиции символов, обязательные и необязательные
сегменты, а также правила форматирования.
Фактически, значение, возвращаемое getValue, находится
между двумя крайностями:
В зависимости от конфигурации экземпляра Inputmask результат может соответствовать одному из этих представлений или их промежуточной форме.
На поведение метода напрямую влияют параметры инициализации Inputmask. Среди наиболее значимых:
showMaskOnFocus — определяет, отображается ли маска при
фокусеclearIncomplete — управляет очисткой незавершённых
значенийremoveMaskOnSubmit — влияет на формат данных при
извлеченииautoUnmask — активирует автоматическое возвращение
«чистого» значенияПри включённом autoUnmask метод getValue
чаще всего возвращает значение без маскировочных символов. Если же
параметр отключён, результат может содержать форматирующие элементы,
такие как скобки, дефисы или пробелы.
Внутри Inputmask существует несколько способов получения данных, и важно различать их поведение:
В отличие от прямых методов получения unmasked данных,
getValue не всегда гарантирует полное удаление маски. Его
задача — вернуть наиболее «естественное» текущее значение с точки зрения
состояния input-элемента.
В зависимости от способа подключения Inputmask метод может вызываться по-разному.
В случае использования чистого JavaScript доступ осуществляется через экземпляр маски:
const input = document.querySelector("input");
const mask = new Inputmask("999-999");
mask.mask(input);
const value = mask.getValue(input);
Здесь элемент передаётся явно, поскольку метод работает не с DOM напрямую, а с логикой экземпляра маски.
В jQuery-реализации доступ к аналогичной функциональности может выглядеть как вызов через плагин:
$("#phone").inputmask();
const value = $("#phone").inputmask("getValue");
Такой подход характерен для старого API, где методы передаются строковым идентификатором.
Особое значение метод getValue приобретает при работе с
неполными или некорректно заполненными значениями.
Если пользователь ввёл только часть данных, возможны варианты:
clearIncompleteНапример, при маске телефонного номера вида
+7 (999) 999-99-99 и вводе только +7 (123)
результат может отличаться:
При вызове getValue Inputmask проходит несколько этапов
обработки:
Такой подход позволяет учитывать не только визуальное состояние поля, но и внутреннюю модель маски, которая хранит информацию о допустимых символах и их позициях.
Метод часто используется совместно с событиями
oncomplete, onincomplete и
oncleared. Это позволяет получать согласованное значение в
разные моменты жизненного цикла ввода.
Например, при срабатывании oncomplete
getValue обычно возвращает полностью валидное значение,
соответствующее маске без пропусков. В то время как при
onincomplete результат может содержать частично заполненную
структуру.
В реальных сценариях метод используется для:
При этом важно учитывать, что использование getValue в
логике бизнес-проверок требует понимания текущих настроек маски,
поскольку один и тот же ввод может давать разные результаты при разных
конфигурациях.
Разные типы масок влияют на итоговое значение:
Это приводит к тому, что getValue нельзя рассматривать
как строго детерминированный метод без контекста конфигурации.
Несмотря на универсальность, метод имеет ряд особенностей:
Эти особенности делают его частью более широкой системы работы с состоянием Inputmask, а не самостоятельным инструментом извлечения данных.