¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Eventos y validación de formularios

Después de esta lección: Puedo reaccionar a un clic y comprobar los datos de un formulario con JavaScript.

Lección de 65 min1 comandoLaboratorio de web en el navegador: HTML, CSS y JavaScript con vista previa en directo

Una página que escucha lo que haces

Un evento es algo que ocurre en la página, como un clic o una tecla, y JavaScript puede reaccionar a él. Con eventos y validación, una página comprueba lo que escribe una persona antes de usarlo.

Piensa en el formulario para reservar una mesa en la cafetería de la facultad. Si alguien deja el nombre vacío o escribe una edad con letras, el formulario debe avisar al momento.

Al terminar esta lección

Nota

Puedo reaccionar a un clic y comprobar los datos de un formulario con JavaScript.

Palabras clave

PalabraQué significaEjemplo
Eventoalgo que ocurre en la páginaclick
Oyenteuna función que espera un evento y se ejecuta al llegaraddEventListener
Campoun hueco del formulario donde se escribe un datoinput
Envíoel momento en que se pulsa el botón del formulariosubmit
Validacióncomprobar que un dato cumple las reglas antes de usarlo
Valorel texto que hay ahora en un campocampo.value

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un oyente enlaza un evento con una función

Un script no se ejecuta cada vez que algo ocurre. Hay que suscribirse. addEventListener recibe el nombre del evento y la función que se ejecutará cuando llegue.

Esa función se llama oyente. Se pasa solo su nombre, sin paréntesis, porque no queremos ejecutarla ahora, sino cuando llegue el evento.

Un botón que cambia el tema

Código: web
var boton = document.getElementById("tema");

function cambiarTema() {
  document.body.classList.toggle("oscuro");
}

boton.addEventListener("click", cambiarTema);

Cuatro eventos habituales

EventoCuándo ocurreUn uso típico
clickSe pulsa un elementoCambiar el tema de la página
inputCambia el texto de un campoFiltrar una lista mientras se escribe
submitSe envía un formularioComprobar los datos antes de enviarlos
keydownSe pulsa una teclaCerrar un menú con la tecla Escape

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Leer un campo y frenar el envío

Un input guarda lo que se escribe en su propiedad value, siempre como texto. Un 19 escrito es el texto "19", no un número.

Al enviar un formulario, el navegador recarga la página. Con evento.preventDefault() se frena ese comportamiento y el script decide qué hacer con los datos.

Frenar el envío y usar el valor

Código: web
formulario.addEventListener("submit", function (evento) {
  evento.preventDefault();
  filtrar(campo.value);
});

Busca el formulario de la página del laboratorio

La página del laboratorio tiene un formulario para filtrar platos. Un grep con la opción -E muestra las cinco líneas con form, label, input y los dos button. El texto de la página está en inglés: Filter es filtrar.

Fíjate en que el label apunta al input con for="word" y que el botón del formulario es de tipo submit.

Encontrar el formulario y sus campos

Comando
docker exec jupyter grep -n -E "<form|<label|<input|<button" site/index.html

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Validar es comprobar el dato antes de usarlo

Una validación es una comprobación con una regla clara. Por ejemplo, el nombre no está vacío, el correo tiene una arroba y la edad está entre 16 y 99.

HTML ayuda con atributos como required, type="email", min y max. Aun así, un script también comprueba, y el servidor comprueba siempre al final.

Ejemplo resuelto: cuatro datos y su resultado

CampoValor escritoReglaResultado
Nombre(vacío)No puede estar vacíoError
Correolucia.uni.esLleva una arrobaError
EdadabcSon solo dígitosError
Edad19Entre 16 y 99Correcto

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que, si el navegador valida, el dato ya es de fiar. Una persona puede saltarse la página y enviar lo que quiera. Valida en la página para ayudar y vuelve a validar en el servidor para proteger.

Sobre este laboratorio y su código: Laboratorio de web en el navegador: HTML, CSS y JavaScript con vista previa en directo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.