Introducción
En este laboratorio, los participantes aprenderán a manejar eventos de entrada de formularios utilizando JavaScript, centrándose en la creación de un campo de entrada interactivo y fácil de usar. El laboratorio guía a los estudiantes a través de la configuración de una estructura HTML, la implementación de técnicas de manejo de eventos dinámicos como onfocus y onblur, y la aplicación de estilos personalizados para mejorar la interacción del usuario.
El proceso paso a paso abarca la creación de un campo de entrada con texto predeterminado, la escritura de código JavaScript para limpiar y restaurar el texto de entrada según las interacciones del usuario, y la aplicación de retroalimentación visual mediante CSS. Al finalizar el laboratorio, los participantes comprenderán cómo manipular las entradas de formularios mediante programación, mejorar la experiencia del usuario y adquirir habilidades prácticas en el desarrollo web basado en eventos.
Configurar la estructura HTML para la entrada del formulario
En este paso, crearemos la estructura HTML básica para una entrada de formulario que demostrará el manejo de eventos con JavaScript. Configuraremos un campo de entrada simple con un texto predeterminado que será manipulado dinámicamente mediante eventos de JavaScript.
Abre el WebIDE y crea un nuevo archivo llamado index.html en el directorio ~/project. Comenzaremos creando una estructura HTML5 básica con un campo de entrada:
<!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>
Analicemos los elementos clave de esta estructura HTML:
- Hemos creado un campo de entrada simple con un
idllamadonameInput. - La entrada tiene un valor predeterminado de "Enter your name".
- Se añadió una clase CSS básica
form-inputpara darle estilo más adelante. - Se incluyó un diseño centrado simple para la entrada.
Ejemplo de resultado al abrir este archivo HTML en un navegador:

El campo de entrada ya está listo para que añadamos el manejo de eventos de JavaScript en los siguientes pasos. Utilizaremos esta estructura para demostrar los eventos onfocus y onblur.
Implementar el evento onfocus para limpiar el texto predeterminado
En este paso, añadiremos JavaScript para implementar el evento onfocus, el cual limpiará el texto predeterminado cuando el campo de entrada reciba el foco. Abre el archivo index.html en el WebIDE y modifícalo para incluir una etiqueta <script> con nuestra lógica de manejo de eventos:
<!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>
Analicemos los cambios clave:
- Añadimos el atributo
onfocusal elemento de entrada, el cual llama a la funciónclearDefaultText()cuando la entrada recibe el foco. - La función
clearDefaultText()verifica si el valor actual es el texto predeterminado. - Si el texto predeterminado está presente, limpia el campo de entrada.
Ejemplo de interacción:
- Cuando la página se carga, la entrada muestra "Enter your name".
- Cuando haces clic o navegas con la tecla tab hacia el campo de entrada, el texto desaparece.
- Ahora puedes escribir tu propio texto libremente.
Este enfoque proporciona una experiencia de usuario limpia al eliminar el texto predeterminado cuando el usuario está listo para ingresar su propia información.
Añadir el evento onblur para restaurar el texto predeterminado
En este paso, mejoraremos nuestro campo de entrada añadiendo un controlador de eventos onblur que restaura el texto predeterminado si el usuario abandona el campo de entrada sin ingresar ningún texto. Actualiza el archivo index.html en el WebIDE con el siguiente código:
<!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>
Cambios clave en este paso:
- Se añadió el atributo
onblural elemento de entrada, el cual llama a la funciónrestoreDefaultText()cuando la entrada pierde el foco. - Se creó una nueva función
restoreDefaultText()que:- Verifica si la entrada está vacía (usando
trim()para manejar espacios en blanco). - Restaura el texto predeterminado si no se ingresó contenido.
- Verifica si la entrada está vacía (usando
Ejemplo de interacción:
- Haz clic en el campo de entrada.
- El texto predeterminado desaparece.
- Si no escribes nada y haces clic fuera.
- El texto predeterminado "Enter your name" vuelve a aparecer.
Este enfoque proporciona una experiencia de usuario fluida al:
- Limpiar el texto predeterminado cuando el usuario comienza a escribir.
- Restaurar el texto predeterminado si el usuario no ingresa nada.
Dar estilo al campo de entrada al recibir el foco
En este paso, mejoraremos la experiencia del usuario añadiendo estilos dinámicos al campo de entrada cuando recibe el foco. Actualiza el archivo index.html en el WebIDE con el siguiente código:
<!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>
Cambios clave en el estilo:
- Se añadió CSS para la clase
.form-input:- Estilo básico con relleno (padding), tamaño de fuente y borde.
- Efecto de transición suave.
- Se añadió el estilo de la pseudo-clase
:focus:- Elimina el contorno predeterminado.
- Cambia el color del borde a verde.
- Añade una sombra sutil cuando está enfocado.
Ejemplo de cambios visuales:
- Estado predeterminado: Borde gris, apariencia estándar.
- Al recibir el foco:
- El borde se vuelve verde.
- Aparece un efecto de brillo suave.
- Animación de transición suave.
Este estilo proporciona retroalimentación visual a los usuarios, mejorando la experiencia interactiva del campo de entrada.
Probar y validar el manejo de eventos de entrada del formulario
En este paso final, mejoraremos nuestro campo de entrada con validación adicional y manejo de eventos para crear una experiencia de usuario más robusta. Actualiza el archivo index.html en el WebIDE con el siguiente código:
<!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>
Mejoras clave en este paso:
- Se añadió un evento
oninputpara proporcionar validación en tiempo real. - Se creó una función
validateInput()que:- Verifica la longitud de la entrada.
- Proporciona mensajes de retroalimentación dinámicos.
- Cambia el color del mensaje según el estado de validación.
Ejemplo de interacción:
- Escribe un nombre muy corto (ej. "A") → "Name is too short!" (rojo).
- Escribe un nombre muy largo → "Name is too long!" (rojo).
- Escribe un nombre válido (2-20 caracteres) → "Valid name entered!" (verde).
Este enfoque demuestra:
- Manejo de eventos.
- Validación dinámica.
- Mecanismos de retroalimentación para el usuario.
Resumen
En este laboratorio, los participantes aprenden a manejar eventos de entrada de formularios utilizando JavaScript mediante la creación de un campo de entrada interactivo con manipulación dinámica de texto. El laboratorio guía a los estudiantes a través de la configuración de una estructura HTML con un valor de entrada predeterminado, la implementación de eventos onfocus y onblur para mejorar la interacción del usuario, y la aplicación de estilos CSS para proporcionar retroalimentación visual cuando se selecciona el campo de entrada.
El enfoque paso a paso cubre técnicas fundamentales de desarrollo web, incluyendo la creación de un diseño HTML responsivo, el uso de escuchadores de eventos de JavaScript para modificar el comportamiento de la entrada y la aplicación de estilos CSS para mejorar la interfaz de usuario. Al seguir estos pasos prácticos, los participantes adquieren experiencia práctica en la creación de interacciones de formulario más intuitivas y fáciles de usar utilizando tecnologías web principales.



