Введение
В этой лабораторной работе участники научатся обрабатывать события ввода формы с помощью 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"
/>
</div>
<script>
function clearDefaultText(input) {
// Check if the current value is the default text
if (input.value === "Enter your name") {
// Clear the input field
input.value = "";
}
}
</script>
</body>
</html>
Разберем ключевые изменения:
- Мы добавили атрибут
onfocusк элементу ввода, который вызывает функциюclearDefaultText(), когда поле получает фокус. - Функция
clearDefaultText()проверяет, является ли текущее значение текстом по умолчанию. - Если текст по умолчанию присутствует, она очищает поле ввода.
Пример взаимодействия:
- При загрузке страницы в поле отображается "Enter your name".
- Когда вы нажимаете на поле ввода или переходите в него с помощью Tab, текст исчезает.
- Теперь вы можете свободно вводить свой собственный текст.
Этот подход обеспечивает удобство для пользователя, удаляя текст по умолчанию, когда пользователь готов ввести свою информацию.
Добавление события 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"
/>
</div>
<script>
function clearDefaultText(input) {
if (input.value === "Enter your name") {
input.value = "";
}
}
function restoreDefaultText(input) {
// If the input is empty, restore the default text
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"
/>
</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"
/>
</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") {
// Basic validation: check name length
if (input.value.length < 2) {
validationMessage.textContent = "Name is too short!";
validationMessage.style.color = "red";
} else if (input.value.length > 20) {
validationMessage.textContent = "Name is too long!";
validationMessage.style.color = "red";
} else {
validationMessage.textContent = "Valid name entered!";
validationMessage.style.color = "#4CAF50";
}
} else {
validationMessage.textContent = "";
}
}
</script>
</body>
</html>
Ключевые улучшения на этом этапе:
- Добавлено событие
oninputдля обеспечения проверки в реальном времени. - Создана функция
validateInput(), которая:- Проверяет длину ввода.
- Предоставляет динамические сообщения обратной связи.
- Изменяет цвет сообщения в зависимости от статуса проверки.
Пример взаимодействия:
- Введите очень короткое имя (например, "A") → "Name is too short!" (красный цвет).
- Введите очень длинное имя → "Name is too long!" (красный цвет).
- Введите корректное имя (2-20 символов) → "Valid name entered!" (зеленый цвет).
Этот подход демонстрирует:
- Обработку событий.
- Динамическую проверку.
- Механизмы обратной связи с пользователем.
Резюме
В этой лабораторной работе участники научились обрабатывать события ввода формы с помощью JavaScript, создав интерактивное поле ввода с динамическим манипулированием текстом. Лабораторная работа провела учащихся через настройку структуры HTML со значением ввода по умолчанию, реализацию событий onfocus и onblur для улучшения взаимодействия с пользователем, а также применение стилей CSS для обеспечения визуальной обратной связи при выборе поля ввода.
Пошаговый подход охватил фундаментальные методы веб-разработки, включая создание адаптивной разметки HTML, использование прослушивателей событий JavaScript для изменения поведения ввода и применение стилей CSS для улучшения пользовательского интерфейса. Следуя этим практическим шагам, участники получили практический опыт создания более интуитивно понятных и удобных взаимодействий с формами с использованием основных веб-технологий.



