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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Evento | algo que ocurre en la página | click |
| Oyente | una función que espera un evento y se ejecuta al llegar | addEventListener |
| Campo | un hueco del formulario donde se escribe un dato | input |
| Envío | el momento en que se pulsa el botón del formulario | submit |
| Validación | comprobar que un dato cumple las reglas antes de usarlo | |
| Valor | el texto que hay ahora en un campo | campo.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
var boton = document.getElementById("tema");
function cambiarTema() {
document.body.classList.toggle("oscuro");
}
boton.addEventListener("click", cambiarTema);Cuatro eventos habituales
| Evento | Cuándo ocurre | Un uso típico |
|---|---|---|
| click | Se pulsa un elemento | Cambiar el tema de la página |
| input | Cambia el texto de un campo | Filtrar una lista mientras se escribe |
| submit | Se envía un formulario | Comprobar los datos antes de enviarlos |
| keydown | Se pulsa una tecla | Cerrar 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
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
docker exec jupyter grep -n -E "<form|<label|<input|<button" site/index.htmlSe 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
| Campo | Valor escrito | Regla | Resultado |
|---|---|---|---|
| Nombre | (vacío) | No puede estar vacío | Error |
| Correo | lucia.uni.es | Lleva una arroba | Error |
| Edad | abc | Son solo dígitos | Error |
| Edad | 19 | Entre 16 y 99 | Correcto |
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.