
В этом тренажере вы попрактикуетесь в валидации HTML-форм с использованием JavaScript. Валидация на стороне клиента позволяет проверять данные, введенные пользователем, *перед* отправкой на сервер. Это улучшает пользовательский опыт, мгновенно сообщая об ошибках, и снижает нагрузку на сервер. Вам будут представлены различные сценарии: проверка обязательных полей, формата данных (email, телефон), длины введенного текста, а также работа с сообщениями об ошибках. Каждое задание содержит HTML-форму и частично написанный JavaScript-код. Вам нужно будет заполнить пропуски в коде, чтобы реализовать требуемую валидацию. После ввода кода вы сможете сразу увидеть результат.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Проверка обязательного поля
В этой форме есть одно обязательное поле "Имя". Необходимо проверить, заполнено ли это поле перед отправкой формы. Если поле пустое, нужно вывести сообщение об ошибке под полем и предотвратить отправку формы.
.error { color: red; }
<form id="myForm">
<div>
<label for="nm">Имя:</label>
<input type="text" id="nm">
<span id="name-error" class="error"></span>
</div>
<button type="submit">Отправить</button>
</form>
const form = document.getElementById('myForm');
form.addEventListener(input__1, (event) => {
const nameInput = document.getElementById(input__2);
const nameError = document.getElementById('name-error');
if (input__3.value.trim() === input__4) {
nameError.input__5 = 'Поле обязательно для заполнения';
event.input__6();
} else {
nameError.textContent = input__7;
}
});
Проверка email
Добавьте валидацию для поля "Email". Необходимо проверить, что введенный текст соответствует формату email адреса. Если формат неверный, выведите сообщение об ошибке и предотвратите отправку.
.error { color: red; }
<form id="myForm">
<div>
<label for="email">Email:</label>
<input type="email" id="email">
<span id="email-error" class="error"></span>
</div>
<button type="submit">Отправить</button>
</form>
const form = document.getElementById('myForm');
form.addEventListener('submit', (event) => {
const emailInput = document.getElementById('email');
const emailError = document.getElementById(input__1);
const emailRegex = input__2;
if (!input__3.test(emailInput.input__4)) {
emailError.textContent = input__5;
event.preventDefault();
} else {
emailError.input__6 = '';
}
});
Проверка длины пароля
Добавьте валидацию для поля "Пароль". Пароль должен быть не менее 8 символов. Выведите сообщение об ошибке, если пароль слишком короткий.
.error { color: red; }
<form id="myForm">
<div>
<label for="password">Пароль:</label>
<input type="password" id="password">
<span id="password-error" class="error"></span>
</div>
<button type="submit">Отправить</button>
</form>
const form = document.getElementById(input__1);
form.addEventListener('submit', (event) => {
const passwordInput = document.getElementById('password');
const passwordError = document.getElementById('password-error');
if (passwordInput.value.input__2 < input__3) {
passwordError.textContent = input__4;
input__5.preventDefault();
} else {
passwordError.textContent = '';
}
});
Подтверждение пароля
Добавьте поле "Подтвердите пароль" и проверьте, совпадают ли пароли. Если пароли не совпадают, выведите сообщение об ошибке.
.error { color: red; }
<form id="myForm">
<div>
<label for="password">Пароль:</label>
<input type="password" id="password">
<span id="password-error" class="error"></span>
</div>
<div>
<label for="confirmPassword">Подтвердите пароль:</label>
<input type="password" id="confirmPassword">
<span id="confirmPassword-error" class="error"></span>
</div>
<button type="submit">Отправить</button>
</form>
const form = document.getElementById('myForm');
form.addEventListener('submit', (event) => {
const passwordInput = document.getElementById(input__1);
const confirmPasswordInput = document.getElementById('confirmPassword');
const confirmPasswordError = document.getElementById('confirmPassword-error');
if (input__2.value !== confirmPasswordInput.value) {
confirmPasswordError.textContent = input__3;
event.preventDefault();
} else {
confirmPasswordError.input__4 = '';
}
});
Выбор из списка
Добавьте выпадающий список с несколькими вариантами (например, страны). Сделайте выбор одного из вариантов обязательным.
.error { color: red; }
<form id="myForm">
<div>
<label for="country">Страна:</label>
<select id="country" >
<option value="">Выберите страну</option>
<option value="usa">США</option>
<option value="canada">Канада</option>
<option value="uk">Великобритания</option>
</select>
<span id="country-error" class="error"></span>
</div>
<button type="submit">Отправить</button>
</form>
const form = document.getElementById('myForm');
form.addEventListener('submit', (event) => {
const countrySelect = document.getElementById(input__1);
const countryError = document.getElementById('country-error');
if (countrySelect.value === input__2) {
countryError.textContent = input__3;
event.preventDefault();
} else {
countryError.textContent = input__4;
}
});
Чекбокс согласия
Добавьте чекбокс "Я согласен с условиями". Сделайте его обязательным для установки перед отправкой формы.
.error { color: red; }
<form id="myForm">
<div>
<input type="checkbox" id="agree">
<label for="agree">Я согласен с условиями</label>
<span id="agree-error" class="error"></span>
</div>
<button type="submit">Отправить</button>
</form>
const form = document.getElementById('myForm');
form.addEventListener(input__1, (event) => {
const agreeCheckbox = document.getElementById(input__2);
const agreeError = document.getElementById('agree-error');
if (!agreeCheckbox.input__3) {
agreeError.textContent = input__4;
event.preventDefault();
} else {
agreeError.textContent = '';
}
});
Проверка числового диапазона
Добавьте поле для ввода возраста. Возраст должен быть в диапазоне от 18 до 100. Выведите сообщение об ошибке, если возраст вне диапазона.
.error { color: red; }
<form id="myForm">
<div>
<label for="age">Возраст:</label>
<input type="number" id="age">
<span id="age-error" class="error"></span>
</div>
<button type="submit">Отправить</button>
</form>
const form = document.getElementById('myForm');
form.addEventListener('submit', (event) => {
const ageInput = document.getElementById('age');
const ageError = document.getElementById('age-error');
const age = parseInt(input__1.value, 10);
if (isNaN(age) || age < input__2 || age > input__3) {
ageError.textContent = input__4;
event.preventDefault();
} else {
ageError.textContent = '';
}
});