Опция rawValueTrimPrefix управляет тем, как библиотека
обрабатывает значение поля ввода при извлечении «сырых» данных
(rawValue) в сценариях, где используется префикс
(prefix). Основная задача этой настройки — контроль
сохранения или удаления префикса в чистом значении, которое возвращается
приложению.
Работа опции становится особенно заметной в конфигурациях, где поле ввода визуально содержит фиксированный текст в начале (например, валютный символ, код страны, служебный идентификатор), но при этом бизнес-логика требует получать значение без этого префикса или, наоборот, с его сохранением.
prefix и rawValueВ Cleave.js существует разделение между:
При использовании prefix библиотека добавляет
фиксированную строку в начало отображаемого значения. Например:
const cleave = new Cleave('#input', {
prefix: '+7',
numericOnly: true
});
В поле пользователь видит:
+7 999 123 45 67
Но при извлечении rawValue возникает вопрос: должен ли
результат содержать +7 или нет?
Именно здесь вступает в работу rawValueTrimPrefix.
rawValueTrimPrefixОпция определяет, будет ли префикс удаляться из
rawValue.
true — префикс удаляется из rawValuefalse — префикс сохраняется в
rawValueПо умолчанию поведение зависит от версии и конфигурации, но чаще
всего используется значение true, чтобы бизнес-логика
получала «чистые» данные.
rawValueTrimPrefix: trueПри включенной опции:
const cleave = new Cleave('#input', {
prefix: '+7',
rawValueTrimPrefix: true,
numericOnly: true
});
В поле ввода:
+7 777 123 45 67rawValue:
7771234567Префикс рассматривается как часть визуального оформления, а не как часть данных. Это удобно в случаях:
rawValueTrimPrefix: falseПри отключенной обрезке:
const cleave = new Cleave('#input', {
prefix: 'USD ',
rawValueTrimPrefix: false
});
В поле ввода:
USD 1200rawValue:
USD 1200Префикс становится частью данных, а не только отображения. Это важно, когда:
rawValuerawValueTrimPrefix напрямую влияет только на
rawValue, не затрагивая отображаемое значение.
В Cleave.js это принципиальный момент: библиотека всегда отделяет:
Это позволяет использовать один и тот же input в разных сценариях без изменения DOM-структуры.
const cleave = new Cleave('#phone', {
prefix: '+7',
numericOnly: true,
rawValueTrimPrefix: true
});
Здесь логично исключить +7 из rawValue,
поскольку:
const cleave = new Cleave('#price', {
prefix: '$',
numeral: true,
rawValueTrimPrefix: true
});
Использование:
$ 1,2001200Это стандартная модель для расчётов, где символ валюты не участвует в вычислениях.
const cleave = new Cleave('#invoice', {
prefix: 'INV-',
rawValueTrimPrefix: false
});
Здесь важно сохранить полный идентификатор:
INV-000123INV-000123Удаление префикса привело бы к потере смысла идентификатора.
При использовании Cleave.js события onChange и
onInit могут возвращать разные представления значения.
Типичная структура:
onChange: function (event) {
console.log(event.target.value); // formatted
console.log(this.getRawValue()); // rawValue
}
При rawValueTrimPrefix: true getRawValue()
всегда возвращает значение без префикса, независимо от того, как оно
отображается.
noImmediatePrefixОпция часто используется совместно с:
prefixnoImmediatePrefixrawValueTrimPrefixКомбинации влияют на поведение ввода:
const cleave = new Cleave('#input', {
prefix: '+',
noImmediatePrefix: true,
rawValueTrimPrefix: true
});
+При пустом input поведение зависит от конфигурации:
rawValueTrimPrefix: truerawValue = ""rawValueTrimPrefix: falserawValue может содержать только префикс:
"+"Это важно учитывать при валидации формы, особенно если префикс обязателен для бизнес-логики.
В Cleave.js это разные сущности. Игнорирование различий приводит к некорректной обработке данных.
Если rawValueTrimPrefix: false, легко случайно
сохранить:
USD 1000
вместо:
1000
или наоборот — сохранить число без валютного контекста.
При использовании сложных масок:
prefix: '+7',
blocks: [1, 3, 3, 2, 2]
пользователь может ожидать, что rawValue будет включать код страны,
но при rawValueTrimPrefix: true он его не получит.
Логика выбора значения опции обычно строится так:
truefalseВ комбинированных форматах (например, телефон + расширение) Cleave.js обрабатывает префикс отдельно от блоков маски.
Пример:
const cleave = new Cleave('#phone', {
prefix: '+7',
delimiters: [' ', '-', '-'],
blocks: [1, 3, 3, 2, 2],
rawValueTrimPrefix: true
});
В этом случае:
+7 не участвует в rawValueЕсли параметры изменяются на лету:
cleave.properties.rawValueTrimPrefix = false;
то новое поведение применяется только к последующим изменениям ввода.
Уже сформированный rawValue не пересчитывается
автоматически до следующего события ввода.
При проектировании API важно учитывать:
rawValueTrimPrefix: true → backend получает «чистые»
данныеrawValueTrimPrefix: false → backend получает уже
форматированную строкуВ микросервисных архитектурах чаще используется первый вариант, чтобы:
numeral)В сочетании с:
numeral: true
префикс обычно воспринимается как декоративный элемент. При
rawValueTrimPrefix: true:
Опция rawValueTrimPrefix в Cleave.js задаёт границу
между визуальной и смысловой частью данных:
true — строгая сегрегация UI и data слояfalse — префикс становится частью данныхЭта настройка определяет, будет ли префикс рассматриваться как часть интерфейсного оформления или как часть значения, передаваемого в систему обработки данных.