Validación de formularios

Un formulario recopila información de las personas, y las personas dejan campos en blanco, escriben mal un correo electrónico o ponen letras donde debería ir un número. No quieres que esos datos lleguen a tu código sin cambios. Antes de que se envíe algo, el navegador puede verificar mucho por ti, pero solo si describes qué espera cada campo. Esa descripción se escribe directamente en tu HTML, y este capítulo trata sobre cómo escribirla.
Campos requeridos y tipos de entrada
Las dos verificaciones más económicas que puedes agregar son decir que un campo debe completarse en absoluto y decir qué tipo de valor va en él.
Agrega la palabra required a una entrada y el navegador se rehúsa a enviar el formulario hasta que ese campo tenga algo en él. No escribes ningún código para que esto suceda. El atributo es la instrucción.
<input type="text" name="full_name" required>La otra mitad es el atributo type. Le dice al navegador qué forma debe tener el valor, y el navegador lo verifica por ti. Usa type="email" y el navegador se asegura de que el valor parezca una dirección de correo electrónico. Usa type="number" y solo acepta números. Hay un tipo para fechas, uno para direcciones web y más.
Piénsalo como un formulario en una clínica donde algunas casillas están marcadas como "debes completar" y la casilla de fecha ya tiene pequeños espacios para día, mes y año. El papel te está diciendo qué va dónde antes de que escribas algo.
Aquí hay un pequeño formulario de registro usando ambos atributos:
<form>
<label>
Dirección de correo electrónico
<input type="email" name="email" required>
</label>
<label>
Sitio web
<input type="url" name="website">
</label>
<button>Registrarse</button>
</form>El campo de correo electrónico debe completarse y debe parecer un correo electrónico. El campo de sitio web es opcional, pero si alguien escribe algo, tiene que parecer una dirección web. El navegador verifica ambos en el momento en que se presiona el botón.
required en un campo y el navegador no dejará pasar uno vacío. Establece el type, como email o number, y verifica que el valor tenga la forma correcta. Elige el tipo que coincida con el campo y obtendrás verificación gratis. Atributos de restricción
Más allá de "completado" y "tipo correcto", a menudo quieres límites: un valor de al menos esta longitud, un número no mayor que aquello, un código en un formato establecido. Un puñado de atributos cubrirán esto.
Puedes establecer límites en lo que acepta un campo. Dos útiles para comenzar:
<input type="text" name="username" maxlength="20">
<input type="number" name="quantity" min="1" max="10">maxlength="20" detiene el campo una vez que contiene veinte caracteres. min y max establecen los números más pequeño y más grande permitidos. El navegador mantiene a las personas dentro de estos límites para que no tengas que verificarlos tú mismo.
La regla que evita la mayor confusión: un pattern debe coincidir con todo el valor, no solo una parte.
<input
type="text"
name="product_code"
pattern="[A-Z]{2}-[0-9]{3}"
title="Dos letras, un guión, tres dígitos, p. ej. AB-123"
required
>maxlength limita cuántos caracteres entran, y min y max limitan un número. El navegador mantiene a la gente dentro de esos límites automáticamente, lo que es mucha verificación que nunca tienes que escribir. Retroalimentación nativa de validación
Declarar las reglas es la mitad de la historia. La otra mitad es lo que la persona ve cuando un valor incumple una.
Cuando alguien presiona el botón enviar y un campo es incorrecto, el navegador detiene el envío y muestra un pequeño mensaje junto al primer campo con un problema, luego mueve el cursor a él. No construyes este mensaje. El navegador lo escribe, en el idioma del visitante, y lo muestra automáticamente.
Así que un campo de correo electrónico required dejado en blanco produce algo como "Por favor completa este campo", y el formulario no se envía hasta que se corrija.
Cuándo aún necesitas JavaScript
La validación nativa verifica un campo contra sus propias reglas. Muchas verificaciones reales no caben en esa forma, y eso es donde JavaScript entra.
Algunas cosas que el navegador no puede verificar por sí solo. Si dos campos de contraseña coinciden entre sí. Si un nombre de usuario ya está siendo usado por otra persona. Si un código de descuento es real. Ninguno de estos se trata de la forma de un campo, por lo que no hay atributo para ellos, y buscas JavaScript para hacer la verificación.
Eso no es un fracaso de HTML. Las verificaciones integradas manejan los casos comunes sin código, y JavaScript maneja el resto.

