Метод getValue

В библиотеке Inputmask присутствует набор служебных методов, предназначенных для получения текущего значения поля ввода в различных представлениях — от визуально отформатированного до полностью «сырого» значения без маски. Одним из таких методов является getValue, который используется для извлечения актуального содержимого инпута с учётом активной маски и её конфигурации.

Метод getValue ориентирован на получение значения, которое находится в поле ввода в текущий момент времени. При этом ключевая особенность заключается в том, что результат может зависеть от параметров маски, включая режимы отображения и очистки данных.

В отличие от стандартного доступа к input.value, который возвращает строку «как есть», метод из Inputmask учитывает внутреннее состояние маскировщика: позиции символов, обязательные и необязательные сегменты, а также правила форматирования.

Фактически, значение, возвращаемое getValue, находится между двумя крайностями:

  • полностью отформатированным (masked value),
  • полностью очищенным (unmasked value).

В зависимости от конфигурации экземпляра Inputmask результат может соответствовать одному из этих представлений или их промежуточной форме.

Влияние конфигурации маски

На поведение метода напрямую влияют параметры инициализации Inputmask. Среди наиболее значимых:

  • showMaskOnFocus — определяет, отображается ли маска при фокусе
  • clearIncomplete — управляет очисткой незавершённых значений
  • removeMaskOnSubmit — влияет на формат данных при извлечении
  • autoUnmask — активирует автоматическое возвращение «чистого» значения

При включённом autoUnmask метод getValue чаще всего возвращает значение без маскировочных символов. Если же параметр отключён, результат может содержать форматирующие элементы, такие как скобки, дефисы или пробелы.

Отличие от unmaskedValue и maskedValue

Внутри Inputmask существует несколько способов получения данных, и важно различать их поведение:

  • masked value — значение, отображаемое в поле ввода
  • unmasked value — значение без форматирования и служебных символов
  • getValue — универсальный метод, возвращающий значение в зависимости от состояния маски

В отличие от прямых методов получения unmasked данных, getValue не всегда гарантирует полное удаление маски. Его задача — вернуть наиболее «естественное» текущее значение с точки зрения состояния input-элемента.

Использование в разных режимах (Vanilla JS и jQuery)

В зависимости от способа подключения 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 проходит несколько этапов обработки:

  1. Считывание текущего состояния input-элемента
  2. Анализ заполненных позиций маски
  3. Применение правил форматирования
  4. Учёт опций очистки и автонормализации
  5. Формирование итоговой строки

Такой подход позволяет учитывать не только визуальное состояние поля, но и внутреннюю модель маски, которая хранит информацию о допустимых символах и их позициях.

Связь с событиями маски

Метод часто используется совместно с событиями oncomplete, onincomplete и oncleared. Это позволяет получать согласованное значение в разные моменты жизненного цикла ввода.

Например, при срабатывании oncomplete getValue обычно возвращает полностью валидное значение, соответствующее маске без пропусков. В то время как при onincomplete результат может содержать частично заполненную структуру.

Практические особенности применения

В реальных сценариях метод используется для:

  • получения значения перед отправкой формы
  • синхронизации состояния input с внешним хранилищем
  • валидации данных до сабмита
  • промежуточной обработки ввода в реактивных интерфейсах

При этом важно учитывать, что использование getValue в логике бизнес-проверок требует понимания текущих настроек маски, поскольку один и тот же ввод может давать разные результаты при разных конфигурациях.

Различия поведения в зависимости от типа маски

Разные типы масок влияют на итоговое значение:

  • числовые маски чаще возвращают «очищенные» значения
  • строковые шаблоны сохраняют форматирование
  • динамические маски могут менять структуру результата в процессе ввода

Это приводит к тому, что getValue нельзя рассматривать как строго детерминированный метод без контекста конфигурации.

Ограничения и особенности интерпретации результата

Несмотря на универсальность, метод имеет ряд особенностей:

  • не всегда возвращает строго «чистое» значение
  • зависит от состояния DOM-элемента
  • чувствителен к параметрам инициализации
  • может давать разные результаты до и после blur-событий

Эти особенности делают его частью более широкой системы работы с состоянием Inputmask, а не самостоятельным инструментом извлечения данных.