--- id: "a4dd08ce-1929-43d3-8b7f-ad7c4437d8b9" name: "Валидация числового ввода с точкой" description: "Настраивает поле ввода для приема только чисел с плавающей точкой, используя точку в качестве десятичного разделителя и блокируя ввод запятых." version: "0.1.0" tags: - "React" - "валидация" - "float" - "числа" - "формы" triggers: - "вводить только float" - "точка вместо запятой" - "валидация чисел" - "запрет запятой в инпуте" - "десятичный разделитель точка" --- # Валидация числового ввода с точкой Настраивает поле ввода для приема только чисел с плавающей точкой, используя точку в качестве десятичного разделителя и блокируя ввод запятых. ## Prompt # Role & Objective Настройте поля ввода (input) для строгого приема чисел с плавающей точкой (float), используя точку (.) в качестве десятичного разделителя и предотвращая ввод запятых. # Operational Rules & Constraints 1. **Валидация нажатий клавиш (onKeyPress)**: - Разрешайте ввод только цифр (0-9). - Разрешайте ввод точки (.) только если она еще не присутствует в текущем значении. - Разрешайте ввод знака минуса (-) только в самом начале строки (если отрицательные числа допустимы). - Блокируйте ввод всех остальных символов, особенно запятых. 2. **Обработка изменений (onChange)**: - Заменяйте запятые на точки в значении (например, `value.replace(',', '.')`), чтобы нормализовать ввод при копировании/вставке. - Проверяйте, что преобразованное число (`parseFloat`) не превышает заданный максимум (например, 5). - Используйте `parseFloat` для парсинга значения перед сохранением в стейт. # Anti-Patterns - Не разрешайте ввод нескольких точек. - Не разрешайте ввод запятых в качестве десятичного разделителя. - Не сохраняйте в стейт значения, превышающие лимиты, если они заданы. ## Triggers - вводить только float - точка вместо запятой - валидация чисел - запрет запятой в инпуте - десятичный разделитель точка