fix: исправлена вставка номера телефона через копирование
- Установка значения напрямую в input элемент - Триггер события input для синхронизации с формой - Использование requestAnimationFrame вместо setTimeout для более надёжной работы Теперь можно вставлять номер телефона через Ctrl+V / Cmd+V
This commit is contained in:
Binary file not shown.
@@ -290,14 +290,24 @@ export default function Step1Phone({
|
||||
}
|
||||
// Оставляем только первые 10 цифр
|
||||
cleanText = cleanText.substring(0, 10);
|
||||
// ✅ Используем setTimeout для избежания циклических ссылок при обновлении формы
|
||||
setTimeout(() => {
|
||||
|
||||
// ✅ Устанавливаем значение напрямую в input, затем синхронизируем с формой
|
||||
const target = e.target as HTMLInputElement;
|
||||
if (target) {
|
||||
target.value = cleanText;
|
||||
// Триггерим событие input для синхронизации с формой
|
||||
const inputEvent = new Event('input', { bubbles: true });
|
||||
target.dispatchEvent(inputEvent);
|
||||
}
|
||||
|
||||
// ✅ Синхронизируем с формой через requestAnimationFrame для избежания циклических ссылок
|
||||
requestAnimationFrame(() => {
|
||||
form.setFieldValue('phone', cleanText);
|
||||
// Показываем предупреждение, если номер был обрезан
|
||||
if (pastedText.replace(/\D/g, '').length > 10) {
|
||||
message.warning('Номер автоматически обрезан до 10 цифр');
|
||||
}
|
||||
}, 0);
|
||||
});
|
||||
}}
|
||||
/>
|
||||
</Space.Compact>
|
||||
|
||||
Reference in New Issue
Block a user