Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
Зареждане…
Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
Зареждане…
Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
JAVASCRIPT FORMS / CHAPTER 05 / Учене / LESSON 10
Проект. Събираме всичко в малка регистрация: етикети, четене на полета, нормализация, правила, съобщения с aria и успех при submit.
План за submit слушателя: 1. preventDefault(). 2. Изчисти старите грешки (текст и aria-invalid). 3. Прочети и нормализирай: name.value.trim(), Number(age.value), terms.checked. 4. За всяко правило, което се чупи, сложи текст в <p id="…-error"> и aria-invalid="true" + aria-describedby. 5. Ако има грешки — статус със броя им; иначе — "Welcome" (симулиран успех, без мрежа).
Помощна функция намалява повторението:
function fail(field, error, text) { error.textContent = text; field.setAttribute("aria-invalid", "true"); field.setAttribute("aria-describedby", error.id); }
ВАЖНО за истинския свят: клиентската валидация подобрява удобството, но НЕ замества проверката на сървъра. Тук няма сървър — реалната регистрация трябва да валидира отново и да не вярва на браузъра.
Честа грешка: грешките остават след поправка; едно общо съобщение вместо по поле; 0 или празна възраст се бъркат.
<form id="signup" novalidate><label for="name">Name</label><input id="name" name="name" type="text"><p id="name-error"></p><label for="email">Email</label><input id="email" name="email" type="email"><p id="email-error"></p><label for="age">Age</label><input id="age" name="age" type="number"><p id="age-error"></p><label><input id="terms" name="terms" type="checkbox"> I accept the terms</label><p id="terms-error"></p><button type="submit">Sign up</button></form><p id="status"></p>Събира етикети, нормализация, правила, aria и симулиран успех в един submit слушател.
Натисни Run — HTML се зарежда в sandbox iframe; Stop маха iframe-а (спира и безкраен цикъл).
›