Introducción
En este laboratorio, los participantes aprenderán a manejar los eventos de entrada de formularios utilizando JavaScript, centrándose en la creación de un campo de entrada interactivo y amigable para el usuario. El laboratorio guía a los aprendices en la configuración de una estructura HTML, la implementación de técnicas dinámicas de manejo de eventos como onfocus y onblur, y la aplicación de estilos personalizados para mejorar la interacción con el usuario.
El proceso paso a paso cubre la creación de un campo de entrada con texto predeterminado, la escritura de JavaScript para limpiar y restaurar el texto de entrada en función de las interacciones del usuario, y la aplicación de retroalimentación visual a través de CSS. Al final del laboratorio, los participantes entenderán cómo manipular los datos de entrada de forma programática, mejorar la experiencia del usuario y adquirir habilidades prácticas en el desarrollo web basado en eventos.
Configura la estructura HTML para la entrada de formulario
En este paso, crearemos la estructura HTML básica para una entrada de formulario que demostrará el manejo de eventos de JavaScript. Creamos un campo de entrada simple con un texto predeterminado que se manipulará dinámicamente mediante eventos de JavaScript.
Abre el WebIDE y crea un nuevo archivo llamado index.html en el directorio ~/project. Empezaremos 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
iddenameInput - La entrada tiene un valor predeterminado de "Enter your name"
- Se agregó una clase CSS básica
form-inputpara futuros estilos - Se incluyó un diseño centrado simple para la entrada
Salida de ejemplo cuando abres este archivo HTML en un navegador:

El campo de entrada ya está listo para que agreguemos el manejo de eventos de JavaScript en los pasos siguientes. Usaremos esta estructura para demostrar los eventos onfocus y onblur en los próximos pasos.
Implementa el evento onfocus para borrar el texto predeterminado
En este paso, agregaremos JavaScript para implementar el evento onfocus, que borrará 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"
onfocus="clearDefaultText(this)"
/>
</div>
<script>
function clearDefaultText(input) {
// Comprueba si el valor actual es el texto predeterminado
if (input.value === "Enter your name") {
// Borra el campo de entrada
input.value = "";
}
}
</script>
</body>
</html>
Analicemos los cambios principales:
- Agregamos el atributo
onfocusal elemento de entrada, que llama a la funciónclearDefaultText()cuando la entrada recibe el foco. - La función
clearDefaultText()comprueba si el valor actual es el texto predeterminado. - Si está presente el texto predeterminado, borra el campo de entrada.
Interacción de ejemplo:
- Cuando se carga la página, la entrada muestra "Enter your name"
- Cuando haces clic/tabulas hacia el campo de entrada, el texto desaparece
- Ahora puedes escribir tu propio texto libremente
Este enfoque proporciona una experiencia de usuario limpia al quitar el texto predeterminado cuando el usuario está listo para ingresar su propia información.
Agrega el evento onblur para restaurar el texto predeterminado
En este paso, mejoraremos nuestro campo de entrada agregando un manejador de eventos onblur que restaure el texto predeterminado si el usuario sale del 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"
onfocus="clearDefaultText(this)"
onblur="restoreDefaultText(this)"
/>
</div>
<script>
function clearDefaultText(input) {
if (input.value === "Enter your name") {
input.value = "";
}
}
function restoreDefaultText(input) {
// Si la entrada está vacía, restaura el texto predeterminado
if (input.value.trim() === "") {
input.value = "Enter your name";
}
}
</script>
</body>
</html>
Cambios clave en este paso:
- Agregó el atributo
onblural elemento de entrada, que llama a la funciónrestoreDefaultText()cuando la entrada pierde el foco. - Creó una nueva función
restoreDefaultText()que:- Verifica si la entrada está vacía (usando
trim()para manejar los espacios en blanco) - Restaura el texto predeterminado si no se ingresó ningún contenido
- Verifica si la entrada está vacía (usando
Interacción de ejemplo:
- 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:
- Borrar 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 agregando 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"
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>
Cambios clave de estilo:
- Agregó CSS para la clase
.form-input:- Estilo básico con relleno, tamaño de fuente y borde
- Efecto de transición suave
- Agregó el estilo de pseudo-clase
:focus:- Elimina el contorno predeterminado
- Cambia el color del borde a verde
- Agrega una sombra de caja sutil cuando tiene el foco
Cambios visuales de ejemplo:
- 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 de formulario
En este último paso, 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"
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") {
// Validación básica: verifica la longitud del nombre
if (input.value.length < 2) {
validationMessage.textContent = "El nombre es demasiado corto!";
validationMessage.style.color = "rojo";
} else if (input.value.length > 20) {
validationMessage.textContent = "El nombre es demasiado largo!";
validationMessage.style.color = "rojo";
} else {
validationMessage.textContent = "Nombre válido ingresado!";
validationMessage.style.color = "#4CAF50";
}
} else {
validationMessage.textContent = "";
}
}
</script>
</body>
</html>
Mejoras clave en este paso:
- Agregó un evento
oninputpara proporcionar validación en tiempo real - Creó una función
validateInput()que:- Verifica la longitud de la entrada
- Proporciona mensajes de retroalimentación dinámica
- Cambia el color del mensaje según el estado de validación
Interacción de ejemplo:
- Escribe un nombre muy corto (por ejemplo, "A") → "El nombre es demasiado corto!" (rojo)
- Escribe un nombre muy largo → "El nombre es demasiado largo!" (rojo)
- Escribe un nombre válido (2-20 caracteres) → "Nombre válido ingresado!" (verde)
Este enfoque demuestra:
- Manejo de eventos
- Validación dinámica
- Mecanismos de retroalimentación al usuario
Resumen
En este laboratorio, los participantes aprenden a manejar los eventos de entrada de formulario utilizando JavaScript al crear un campo de entrada interactivo con manipulación dinámica de texto. El laboratorio guía a los aprendices a configurar una estructura HTML con un valor de entrada predeterminado, implementar los eventos onfocus y onblur para mejorar la interacción del usuario y aplicar 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, como crear un diseño HTML responsivo, utilizar los oyentes de eventos de JavaScript para modificar el comportamiento de la entrada y aplicar estilos CSS para mejorar la interfaz de usuario. Siguiendo estos pasos prácticos, los participantes obtienen experiencia práctica en la creación de interacciones de formulario más intuitivas y amigables para el usuario utilizando tecnologías web core.



