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 цифр
|
// Оставляем только первые 10 цифр
|
||||||
cleanText = cleanText.substring(0, 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);
|
form.setFieldValue('phone', cleanText);
|
||||||
// Показываем предупреждение, если номер был обрезан
|
// Показываем предупреждение, если номер был обрезан
|
||||||
if (pastedText.replace(/\D/g, '').length > 10) {
|
if (pastedText.replace(/\D/g, '').length > 10) {
|
||||||
message.warning('Номер автоматически обрезан до 10 цифр');
|
message.warning('Номер автоматически обрезан до 10 цифр');
|
||||||
}
|
}
|
||||||
}, 0);
|
});
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Space.Compact>
|
</Space.Compact>
|
||||||
|
|||||||
Reference in New Issue
Block a user