-
- setForm({ ...form, lastName: e.target.value })} />
+
+ { setForm({ ...form, lastName: e.target.value }); if (fieldErrors.lastName) setFieldErrors(p => ({...p, lastName: undefined})) }}
+ onBlur={() => { if (!form.lastName.trim()) setFieldErrors(p => ({...p, lastName: 'Фамилия обязательна'})) }} />
-
- setForm({ ...form, firstName: e.target.value })} />
+
+ { setForm({ ...form, firstName: e.target.value }); if (fieldErrors.firstName) setFieldErrors(p => ({...p, firstName: undefined})) }}
+ onBlur={() => { if (!form.firstName.trim()) setFieldErrors(p => ({...p, firstName: 'Имя обязательно'})) }} />
@@ -325,11 +332,15 @@ export function EmployeesPage() {
-
- setForm({ ...form, email: e.target.value })} />
+
+ { setForm({ ...form, email: e.target.value }); if (fieldErrors.email) setFieldErrors(p => ({...p, email: undefined})) }}
+ onBlur={() => { if (form.email) { const e = validateEmail(form.email); if (e) setFieldErrors(p => ({...p, email: e})) } }} />
-
- setForm({ ...form, phone: v })} />
+
+ { setForm({ ...form, phone: v }); if (fieldErrors.phone) setFieldErrors(p => ({...p, phone: undefined})) }}
+ onBlur={() => { if (form.phone) { const e = validatePhone(form.phone); if (e) setFieldErrors(p => ({...p, phone: e})) } }} />
diff --git a/src/food-market.web/src/pages/ForgotPasswordPage.tsx b/src/food-market.web/src/pages/ForgotPasswordPage.tsx
index 9b57bc9..ea87e09 100644
--- a/src/food-market.web/src/pages/ForgotPasswordPage.tsx
+++ b/src/food-market.web/src/pages/ForgotPasswordPage.tsx
@@ -51,7 +51,9 @@ export function ForgotPasswordPage() {
- setEmail(e.target.value)}
+ { setEmail(e.target.value); if (error) setError(null) }}
+ onBlur={() => setError(validateEmail(email))}
autoComplete="email" placeholder="name@example.kz" required />