Библиотека Cleave.js предоставляет программный интерфейс для
управления форматированием значения, привязанного к полю ввода. Основной
объект, с которым происходит взаимодействие после инициализации, — это
экземпляр Cleave. Именно через него осуществляется доступ к
текущему значению, его программная установка, а также изменение
состояния форматирования без прямого вмешательства в DOM.
После создания экземпляра:
const cleave = new Cleave(inputElement, {
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
становится доступен набор методов, позволяющих управлять значением поля независимо от пользовательского ввода.
valueОсновной способ получить текущее отформатированное значение —
обращение к свойству value экземпляра.
const current = cleave.value;
Значение, возвращаемое через value, всегда соответствует
отображаемому содержимому input-поля, включая все применённые правила
форматирования: разделители тысяч, маски, префиксы и другие
трансформации.
Ключевая особенность:
Пример при числовом формате:
// пользователь ввёл: 1000000
cleave.value; // "1,000,000"
rawValueДля работы с «чистыми» данными используется
rawValue.
const raw = cleave.getRawValue();
Метод возвращает значение без форматирования, масок и вспомогательных символов.
Особенности поведения:
Пример:
// отображается: "1,000,000"
cleave.getRawValue(); // "1000000"
Этот метод особенно важен при:
setRawValueДля установки «чистого» значения используется метод:
cleave.setRawValue(value);
Этот метод принимает необработанное значение и автоматически применяет ко всем форматирующим правилам текущего экземпляра.
Пример для числового режима:
cleave.setRawValue("2500000");
Результат в input:
2,500,000
Поведение метода:
setValueМетод setValue используется для установки уже
отформатированного значения:
cleave.setValue(value);
Он полезен, когда значение уже содержит нужную структуру или поступает из внешнего источника в финальном виде.
Пример:
cleave.setValue("1,200,000");
Особенности:
setValue и setRawValueРазграничение этих методов является критическим для корректного управления данными.
setRawValuesetValueПосле любого изменения значения через API происходит обновление внутреннего состояния:
Это означает, что Cleave.js всегда работает как реактивный слой между пользовательским вводом и логикой форматирования.
Каждый вызов setRawValue или setValue
фактически инициирует полный цикл обработки:
Результат методов напрямую зависит от конфигурации экземпляра.
Пример:
const cleave = new Cleave(input, {
prefix: '$',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
cleave.setRawValue("10000");
Результат:
$10,000
Любое изменение настроек влияет на результат повторной установки значений.
Хотя Cleave предоставляет собственное состояние, значение input можно получить напрямую:
inputElement.value
Однако такое обращение не учитывает внутреннюю логику библиотеки и
может не совпадать с cleave.value в процессе промежуточных
обновлений.
После вызова:
cleave.destroy();
методы setValue, setRawValue и доступ к
value теряют смысл, поскольку обработка событий и
форматирование прекращаются. Input возвращается к стандартному поведению
DOM-элемента.
В случаях, когда значение изменяется программно сразу после инициализации, возможны ситуации, требующие учёта порядка выполнения:
const cleave = new Cleave(input, { numeral: true });
cleave.setRawValue("5000");
console.log(cleave.value);
Значение value гарантированно обновляется синхронно, что
исключает необходимость ожидания событий или таймеров.
Cleave.js поддерживает две формы представления данных:
Методы API являются интерфейсом для переключения между этими состояниями, при этом библиотека самостоятельно обеспечивает согласованность между ними.
const cleave = new Cleave(input, {
numeral: true
});
cleave.setRawValue("75000");
fetch('/api/price')
.then(res => res.json())
.then(data => {
cleave.setRawValue(data.price);
});
formData.amount = cleave.getRawValue();
При включённом numeral: true:
rawValue всегда возвращает непрерывную цифровую
последовательность.При использовании масок (например, телефон, дата):
setRawValue интерпретирует вход в контексте маски;setValue может корректировать структуру;value всегда соответствует маске;rawValue может содержать только значимые символы.Если передать в setRawValue значение, не соответствующее
ожидаемому формату:
Пример:
cleave.setRawValue("12ab34cd");
Результат:
1234
Методы могут вызываться многократно без пересоздания экземпляра:
cleave.setRawValue("1000");
cleave.setRawValue("2000");
cleave.setRawValue("3000");
Каждый вызов полностью заменяет предыдущее состояние без накопления эффектов.
При одновременной работе пользователя и программного API: