Делимитеры в Cleave.js представляют собой
символы-разделители, автоматически вставляемые между блоками данных во
время ввода. Они используются для визуального форматирования строк и
повышения читаемости значений.
Наиболее распространённые примеры:
Без делимитеров строка:
4111111111111111
превращается в:
4111 1111 1111 1111
или:
4111-1111-1111-1111
в зависимости от конфигурации.
delimiterОсновной параметр для задания разделителя —
delimiter.
Пример:
new Cleave('.input', {
blocks: [4, 4, 4, 4],
delimiter: '-'
});
Результат ввода:
1234-5678-9012-3456
blocks определяет размеры сегментов;delimiter вставляется между сегментами;Наиболее частый вариант — пробел.
new Cleave('.input', {
blocks: [4, 4, 4, 4],
delimiter: ' '
});
Результат:
1234 5678 9012 3456
Такой формат особенно удобен для:
Cleave.js поддерживает многосимвольные разделители.
Пример:
new Cleave('.input', {
blocks: [3, 3, 3],
delimiter: ' :: '
});
Результат:
123 :: 456 :: 789
Это полезно для:
Форматирование дат — один из наиболее типичных сценариев.
new Cleave('.date', {
date: true,
datePattern: ['d', 'm', 'Y'],
delimiter: '.'
});
Результат:
31.12.2025
Другие варианты:
delimiter: '/'
Результат:
31/12/2025
или:
delimiter: '-'
Результат:
31-12-2025
Пример:
new Cleave('.phone', {
blocks: [3, 3, 2, 2],
delimiter: '-',
numericOnly: true
});
Результат:
777-123-45-67
Часто используется комбинация разных символов:
+7 (777) 123-45-67
Для такого формата обычно применяются пользовательские блоки.
delimitersПараметр delimiters позволяет задавать разные
разделители между блоками.
delimiterdelimiter — один символ или строка для всех
разделений;delimiters — массив разных разделителей.Пример:
new Cleave('.custom', {
blocks: [2, 2, 4],
delimiters: ['/', '-']
});
Результат:
12/34-5678
Количество элементов в delimiters должно быть на единицу
меньше количества блоков.
Правильно:
blocks: [2, 2, 4]
delimiters: ['/', '-']
Неправильно:
blocks: [2, 2, 4]
delimiters: ['/']
Некорректное количество может привести к неожиданному поведению форматирования.
Пример сложного формата:
new Cleave('.serial', {
blocks: [3, 2, 4, 2],
delimiters: ['-', '/', ':']
});
Результат:
123-45/6789:10
Такой подход применяется для:
Позиция разделителя зависит от:
blocks.Пример:
blocks: [4, 4, 4]
delimiter: '-'
После ввода первых четырёх символов автоматически появляется:
1234-
После заполнения второго блока:
1234-5678-
Размеры блоков напрямую определяют положение делимитеров.
Пример:
blocks: [2, 6, 2]
delimiter: ':'
Результат:
12:345678:90
Если изменить размеры:
blocks: [4, 4, 2]
то формат станет:
1234:5678:90
Cleave.js автоматически корректирует позицию курсора при
вставке делимитеров.
Без этого механизма возникали бы проблемы:
Библиотека отслеживает:
Особенность поведения:
1234-5678
При удалении цифры перед делимитером библиотека корректно перестраивает строку:
1235-678
а не оставляет:
123-5678
Это достигается за счёт внутреннего механизма перерасчёта блоков.
При вставке:
1234567890123456
в поле с конфигурацией:
blocks: [4, 4, 4, 4],
delimiter: ' '
результат автоматически преобразуется в:
1234 5678 9012 3456
Разделители добавляются даже при массовой вставке значения.
В качестве делимитера можно использовать практически любой символ.
Примеры:
delimiter: '|'
1234|5678|9012
delimiter: '*'
1234*5678*9012
delimiter: '#'
1234#5678#9012
Поддерживаются Unicode-символы.
Пример:
delimiter: '•'
Результат:
1234•5678•9012
Другой вариант:
delimiter: '→'
Результат:
1234→5678→9012
Иногда требуется использование блоков без визуального разделителя.
new Cleave('.input', {
blocks: [4, 4, 4],
delimiter: ''
});
Формально блоки продолжают существовать, но визуально строка выглядит непрерывной:
123456789012
Такой подход применяется редко, поскольку теряется смысл форматирования.
prefixРазделитель может использоваться вместе с префиксом.
Пример:
new Cleave('.account', {
prefix: 'ACC',
blocks: [3, 3, 3],
delimiter: '-'
});
Результат:
ACC123-456-789
numericOnlyПри использовании:
numericOnly: true
пользователь не сможет вводить символы, кроме цифр, однако делимитеры продолжат вставляться автоматически.
Пример:
new Cleave('.card', {
blocks: [4, 4, 4, 4],
delimiter: ' ',
numericOnly: true
});
Важно понимать различие между:
Пример:
1234-5678-9012
input.value
Результат:
1234-5678-9012
cleave.getRawValue()
Результат:
123456789012
Делимитеры автоматически удаляются из raw value.
Возможны конструкции вида:
delimiter: '--'
Результат:
1234--5678--9012
или:
delimiter: ' / '
Результат:
1234 / 5678 / 9012
Грамотно выбранные разделители:
Плохой выбор делимитеров приводит к:
blocks: [2, 2, 2]
delimiters: ['-']
Один разделитель не соответствует двум границам между блоками.
delimiter: '------'
Избыточные символы ухудшают читаемость.
Проблемный пример:
delimiter: '1'
Разделитель совпадает с допустимым вводом и визуально запутывает строку.
Например:
delimiter: '.'
и:
delimiter: '•'
могут выглядеть слишком похоже в некоторых шрифтах.
new Cleave('.complex', {
blocks: [2, 4, 4, 2],
delimiters: ['/', '-', ':'],
uppercase: true
});
Результат:
AB/CD12-EF34:56
Такой формат подходит для:
Классический пример:
new Cleave('.card', {
creditCard: true,
delimiter: ' '
});
Результат:
4111 1111 1111 1111
При этом Cleave.js автоматически определяет тип карты и
корректирует блоки.
Например:
4-4-4-4;4-6-5.Конфигурацию можно пересоздавать динамически.
Пример:
const cleave = new Cleave('.input', {
blocks: [4, 4, 4],
delimiter: '-'
});
Позже:
cleave.destroy();
new Cleave('.input', {
blocks: [4, 4, 4],
delimiter: ':'
});
Формат изменится с:
1234-5678-9012
на:
1234:5678:9012
Во время ввода библиотека:
Именно поэтому форматирование остаётся стабильным даже при: