Введение
В этом лабе участники научатся обрабатывать события ввода форм с использованием JavaScript, сосредоточившись на создании интерактивного и пользовательского поля ввода. Лаб-руководство помогает изучать установку структуры HTML, реализацию динамических техник обработки событий, таких как onfocus и onblur, и применение пользовательских стилей для улучшения взаимодействия с пользователем.
Пошаговый процесс включает создание поля ввода с начальным текстом, написание JavaScript для очистки и восстановления вводимого текста в зависимости от взаимодействия пользователя, и применение визуального обратного звука с помощью CSS. В конце лабы участники поймут, как программно манипулировать вводом форм, улучшить пользовательский опыт и приобрести практические навыки в разработке веб-приложений, основанной на событиях.
Настройка HTML-структуры для ввода форм
В этом шаге мы создадим базовую HTML-структуру для ввода форм, которая будет демонстрировать обработку событий JavaScript. Мы настроим простое поле ввода с начальным текстом, которое будет динамически манипулироваться с использованием событий JavaScript.
Откройте WebIDE и создайте новый файл с именем index.html в каталоге ~/project. Начнем с создания базовой структуры HTML5 с полем ввода:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Form Input Event Handling</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
.input-container {
text-align: center;
}
</style>
</head>
<body>
<div class="input-container">
<input
type="text"
id="nameInput"
value="Enter your name"
class="form-input"
/>
</div>
</body>
</html>
Рассмотрим основные элементы этой HTML-структуры:
- Мы создали простое поле ввода с
id"nameInput". - Ввод имеет начальное значение "Enter your name".
- Добавили базовый CSS-класс
form-inputдля будущих стилей. - Включили простой центрированный макет для ввода.
Пример вывода при открытии этого HTML-файла в браузере:

Теперь поле ввода готово для добавления обработки событий JavaScript в последующих шагах. Мы будем использовать эту структуру для демонстрации событий onfocus и onblur в следующих шагах.
Реализация события onfocus для очистки стандартного текста
В этом шаге мы добавим JavaScript для реализации события onfocus, которое очистит начальный текст, когда поле ввода получает фокус. Откройте файл index.html в WebIDE и измените его, чтобы включить тег <script> с нашей логикой обработки событий:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Form Input Event Handling</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
.input-container {
text-align: center;
}
</style>
</head>
<body>
<div class="input-container">
<input
type="text"
id="nameInput"
value="Enter your name"
class="form-input"
onfocus="clearDefaultText(this)"
/>
</div>
<script>
function clearDefaultText(input) {
// Проверяем, является ли текущее значение начальным текстом
if (input.value === "Enter your name") {
// Очищаем поле ввода
input.value = "";
}
}
</script>
</body>
</html>
Рассмотрим основные изменения:
- Мы добавили атрибут
onfocusк элементу ввода, который вызывает функциюclearDefaultText()при получении фокуса вводом. - Функция
clearDefaultText()проверяет, является ли текущее значение начальным текстом. - Если начальный текст присутствует, она очищает поле ввода.
Пример взаимодействия:
- При загрузке страницы в поле ввода отображается "Enter your name".
- При нажатии/переключении фокуса на поле ввода текст исчезает.
- Теперь вы можете свободно вводить собственный текст.
Этот подход обеспечивает чистый пользовательский опыт, удаляя начальный текст, когда пользователь готов ввести собственную информацию.
Добавить событие onblur для восстановления стандартного текста
В этом шаге мы усовершенствуем наше поле ввода, добавив обработчик события onblur, который восстанавливает начальный текст, если пользователь покидает поле ввода, не вводя никакого текста. Обновите файл index.html в WebIDE следующим кодом:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Form Input Event Handling</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
.input-container {
text-align: center;
}
</style>
</head>
<body>
<div class="input-container">
<input
type="text"
id="nameInput"
value="Enter your name"
class="form-input"
onfocus="clearDefaultText(this)"
onblur="restoreDefaultText(this)"
/>
</div>
<script>
function clearDefaultText(input) {
if (input.value === "Enter your name") {
input.value = "";
}
}
function restoreDefaultText(input) {
// Если ввод пуст, восстанавливаем начальный текст
if (input.value.trim() === "") {
input.value = "Enter your name";
}
}
</script>
</body>
</html>
Основные изменения в этом шаге:
- Добавлен атрибут
onblurк элементу ввода, который вызывает функциюrestoreDefaultText()при потере фокуса вводом. - Создана новая функция
restoreDefaultText(), которая:- Проверяет, является ли ввод пустым (используя
trim()для обработки пробелов) - Восстанавливает начальный текст, если не было введено никакого содержимого
- Проверяет, является ли ввод пустым (используя
Пример взаимодействия:
- Нажмите на поле ввода.
- Начальный текст исчезает.
- Если вы ничего не введете и кликнете за пределами поля.
- Возвращается начальный текст "Enter your name".
Данный подход обеспечивает гладкий пользовательский опыт:
- Очищая начальный текст, когда пользователь начинает вводить текст.
- Восстанавливая начальный текст, если пользователь ничего не вводит.
Стилизовать поле ввода при фокусе
В этом шаге мы усовершенствуем пользовательский опыт, добавив динамическое стилирование к полю ввода при получении фокуса. Обновите файл index.html в WebIDE следующим кодом:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Form Input Event Handling</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
.input-container {
text-align: center;
}
.form-input {
padding: 10px;
font-size: 16px;
border: 2px solid #ccc;
border-radius: 5px;
transition: all 0.3s ease;
}
.form-input:focus {
outline: none;
border-color: #4caf50;
box-shadow: 0 0 10px rgba(76, 175, 80, 0.5);
}
</style>
</head>
<body>
<div class="input-container">
<input
type="text"
id="nameInput"
value="Enter your name"
class="form-input"
onfocus="clearDefaultText(this)"
onblur="restoreDefaultText(this)"
/>
</div>
<script>
function clearDefaultText(input) {
if (input.value === "Enter your name") {
input.value = "";
}
}
function restoreDefaultText(input) {
if (input.value.trim() === "") {
input.value = "Enter your name";
}
}
</script>
</body>
</html>
Основные изменения в стилистике:
- Добавлен CSS для класса
.form-input:- Базовое стилирование с отступами, размером шрифта и границей
- Эффект гладкой анимации перехода
- Добавлено стилирование псевдо-класса
:focus:- Удаление стандартного轮廓на
- Смена цвета границы на зеленый
- Добавление незначительного тени при получении фокуса
Пример визуальных изменений:
- Стандартное состояние: серый бордер, стандартный вид
- При получении фокуса:
- Бордер становится зеленым
- Появляется эффект мягкого свечения
- Анимация гладкого перехода
Это стилирование предоставляет визуальный обратный звук пользователям, улучшая интерактивный опыт работы с полем ввода.
Тестировать и валидировать обработку событий ввода форм
В этом финальном шаге мы усовершенствуем наше поле ввода дополнительной проверкой и обработкой событий, чтобы создать более надежный пользовательский опыт. Обновите файл index.html в WebIDE следующим кодом:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Form Input Event Handling</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
.input-container {
text-align: center;
margin-bottom: 20px;
}
.form-input {
padding: 10px;
font-size: 16px;
border: 2px solid #ccc;
border-radius: 5px;
transition: all 0.3s ease;
width: 300px;
}
.form-input:focus {
outline: none;
border-color: #4caf50;
box-shadow: 0 0 10px rgba(76, 175, 80, 0.5);
}
#validationMessage {
color: #4caf50;
font-weight: bold;
}
</style>
</head>
<body>
<div class="input-container">
<input
type="text"
id="nameInput"
value="Enter your name"
class="form-input"
onfocus="clearDefaultText(this)"
onblur="restoreDefaultText(this)"
oninput="validateInput(this)"
/>
</div>
<div id="validationMessage"></div>
<script>
function clearDefaultText(input) {
if (input.value === "Enter your name") {
input.value = "";
}
}
function restoreDefaultText(input) {
if (input.value.trim() === "") {
input.value = "Enter your name";
}
}
function validateInput(input) {
const validationMessage = document.getElementById("validationMessage");
if (input.value.length > 0 && input.value !== "Enter your name") {
// Базовая проверка: проверка длины имени
if (input.value.length < 2) {
validationMessage.textContent = "Имя слишком короткое!";
validationMessage.style.color = "red";
} else if (input.value.length > 20) {
validationMessage.textContent = "Имя слишком длинное!";
validationMessage.style.color = "red";
} else {
validationMessage.textContent = "Введено корректное имя!";
validationMessage.style.color = "#4CAF50";
}
} else {
validationMessage.textContent = "";
}
}
</script>
</body>
</html>
Основные улучшения в этом шаге:
- Добавлено событие
oninputдля обеспечения реального времени проверки. - Создана функция
validateInput(), которая:- Проверяет длину ввода.
- Предоставляет динамические сообщения обратной связи.
- Меняет цвет сообщения в зависимости от статуса проверки.
Пример взаимодействия:
- Введите очень короткое имя (например, "A") → "Имя слишком короткое!" (красный)
- Введите очень длинное имя → "Имя слишком длинное!" (красный)
- Введите корректное имя (от 2 до 20 символов) → "Введено корректное имя!" (зеленый)
Данный подход демонстрирует:
- Обработку событий.
- Динамическую проверку.
- Механизмы обратной связи с пользователем.
Резюме
В этом практическом занятии участники узнают, как обрабатывать события ввода форм с использованием JavaScript, создавая интерактивное поле ввода с динамическим манипулированием текстом. Практическое занятие помогает ученикам настроить HTML-структуру с начальным значением ввода, реализовать события onfocus и onblur, чтобы улучшить взаимодействие с пользователем, и применить стили CSS для предоставления визуального обратного звука при выборе поля ввода.
Пошаговый подход включает в себя фундаментальные методы веб-разработки, такие как создание адаптивного HTML-레이аута, использование слушателей событий JavaScript для изменения поведения ввода и применение стилей CSS для улучшения пользовательского интерфейса. Следуя этим практическим шагам, участники получают опыт в создании более интуитивных и удобных для пользователя формных взаимодействий с использованием основных веб-технологий.



