
В этом тренажере вы попрактикуетесь в использовании события `submit` для форм в JavaScript. Событие `submit` возникает, когда пользователь отправляет форму, обычно нажатием кнопки \"Отправить\" или клавиши Enter. Вы научитесь перехватывать это событие, предотвращать стандартное поведение браузера (перезагрузку страницы), получать данные из полей формы и выполнять с ними различные действия. Задания охватывают различные сценарии, от простой валидации до отправки данных без перезагрузки страницы. В каждом задании вам будет предоставлен HTML-код формы и часть JavaScript-кода, который вам нужно будет дополнить.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Простое перехватывание события submit
Допишите JavaScript-код так, чтобы при отправке формы (нажатии на кнопку "Отправить") стандартное поведение браузера (перезагрузка страницы) предотвращалось. В консоль должно выводиться сообщение "Форма отправлена!".
<form id="myForm">
<input type="text" name="name" value="Иван">
<input type="email" name="email" value="ivan@example.com">
<button type="submit">Отправить</button>
</form>
const form = document.getElementById("myForm");
form.addEventListener(input__1, (event) => {
event.input__2();
console.log("Форма отправлена!");
});
Получение данных из формы
Дополните код так, чтобы при отправке формы в консоль выводились значения полей "name" и "email". Предотвратите стандартное поведение браузера.
<form id="myForm">
<input type="text" name="name" value="Иван">
<input type="email" name="email" value="ivan@example.com">
<button type="submit">Отправить</button>
</form>
const form = document.getElementById("myForm");
form.addEventListener("submit", (event) => {
event.preventDefault();
const name = event.target.input__1.value;
const email = event.input__2.input__3.value;
console.log("Имя:", name);
console.log("Email:", email);
});
Валидация формы
Допишите код, чтобы при отправке формы проверялось, заполнено ли поле "name". Если поле пустое, выведите сообщение "Пожалуйста, введите имя" в элемент с id="error-message" и предотвратите отправку формы. Если поле заполнено, отправка формы должна быть предотвращена, а в консоль должно выводиться сообщение с введенным именем.
<form id="myForm">
<input type="text" name="name" value="">
<input type="email" name="email" value="ivan@example.com">
<button type="submit">Отправить</button>
<div id="error-message"></div>
</form>
const form = document.getElementById("myForm");
const errorMessage = document.getElementById("error-message");
form.addEventListener("submit", (event) => {
event.preventDefault();
const name = event.target.name.value;
if (input__1 === "") {
errorMessage.textContent = input__2;
} else {
console.log("Имя:", name);
}
});
Изменение содержимого страницы после отправки
Допишите код, чтобы после отправки формы (и предотвращения стандартного поведения) содержимое элемента с id="output" менялось на "Спасибо за отправку, {имя}!", где {имя} - значение из поля "name".
<form id="myForm">
<input type="text" name="name" value="Иван">
<button type="submit">Отправить</button>
</form>
<div id="output"></div>
const form = document.getElementById("myForm");
const output = document.getElementById("output");
form.addEventListener("submit", (event) => {
event.preventDefault();
const name = event.target.name.value;
output.textContent = input__1;
});
Добавление данных в список
Допишите код, чтобы при отправке формы значение из поля "item" добавлялось в список (ul) с id="list" в виде нового элемента списка (li). Предотвратите стандартное поведение браузера.
<form id="myForm">
<input type="text" name="item" value="Новый элемент">
<button type="submit">Добавить</button>
</form>
<ul id="list"></ul>
const form = document.getElementById("myForm");
const list = document.getElementById("list");
form.addEventListener("submit", (event) => {
event.preventDefault();
const newItemText = event.target.item.value;
const newItem = document.input__1(input__2);
newItem.textContent = newItemText;
list.input__3(newItem);
});
Условное отображение содержимого
Допишите код, чтобы при отправке формы, если значение поля "age" больше или равно 18, в элементе с id="message" отображался текст "Совершеннолетний", иначе - "Несовершеннолетний". Стандартное поведение браузера должно быть предотвращено.
<form id="myForm">
<input type="number" name="age" value="20">
<button type="submit">Проверить</button>
</form>
<div id="message"></div>
const form = document.getElementById("myForm");
const message = document.getElementById("message");
form.addEventListener("submit", (event) => {
event.preventDefault();
const age = Number(event.target.age.value);
if (age input__1 18) {
message.textContent = "Совершеннолетний";
} input__2 {
message.textContent = "Несовершеннолетний";
}
});
Изменение класса элемента
Допишите код, чтобы при отправке формы элементу с id="myDiv" добавлялся класс "submitted", если он отсутствует, или удалялся, если он присутствует. Предотвратите стандартное поведение браузера.
<form id="myForm">
<button type="submit">Изменить класс</button>
</form>
<div id="myDiv"></div>
const form = document.getElementById("myForm");
const myDiv = document.getElementById("myDiv");
form.addEventListener("submit", (event) => {
event.preventDefault();
myDiv.classList.input__1("submitted");
});
Отображение/скрытие элемента
Допишите код, чтобы при отправке формы, если чекбокс с id="show" отмечен, элемент с id="secret" становился видимым (добавлялся класс "visible"), иначе - скрывался (класс "visible" удалялся). Предотвратите стандартное поведение браузера. CSS-класс "visible" уже определен в стилях.
<style>
.visible {
display: block;
}
</style>
<form id="myForm">
<input type="checkbox" id="show" name="show">
<label for="show">Показать секрет</label>
<button type="submit">Отправить</button>
</form>
<div id="secret" style="display: none;">Секретный контент</div>
const form = document.getElementById("myForm");
const secret = document.getElementById("secret");
const showCheckbox = document.getElementById("show");
form.addEventListener("submit", (event) => {
event.preventDefault();
if (showCheckbox.input__1) {
secret.classList.add("visible");
} else {
secret.classList.input__2("visible");
}
});
Изменение изображения
Допишите код, чтобы при отправке формы, если в поле "imageNumber" введено число 1, 2, 3 или 4, то у элемента `img` с id="myImage" менялся атрибут `src` на соответствующую картинку (используйте предоставленные URL). Если введено другое число, то в элемент с id="imageMessage" выводилось сообщение "Введите число от 1 до 4". Предотвратите стандартное поведение.
<form id="myForm">
<input type="number" name="imageNumber" value="1">
<button type="submit">Сменить картинку</button>
</form>
<img id="myImage" src="https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike2-300x300.png" width="150">
<div id="imageMessage"></div>
const form = document.getElementById("myForm");
const myImage = document.getElementById("myImage");
const imageMessage = document.getElementById("imageMessage");
const imageUrls = [
"https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike2-300x300.png",
"https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike-300x300.png",
"https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike3-300x300.png",
"https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike4-300x300.png"
];
form.addEventListener("submit", (event) => {
event.preventDefault();
const imageNumber = Number(event.target.imageNumber.value);
imageMessage.textContent = "";
if (imageNumber >= 1 && imageNumber <= 4) {
myImage.src = imageUrls[imageNumber input__1 1];
} else {
imageMessage.textContent = input__2;
}
});