fix: исправлена вставка номера телефона через копирование

- Установка значения напрямую в input элемент
- Триггер события input для синхронизации с формой
- Использование requestAnimationFrame вместо setTimeout для более надёжной работы

Теперь можно вставлять номер телефона через Ctrl+V / Cmd+V
This commit is contained in:
Fedor
2025-12-04 10:10:19 +03:00
parent 1f88e156b7
commit 920eb53660
2 changed files with 13 additions and 3 deletions

View File

@@ -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>