Cómo funciona la validación nativa de formularios con required, type, pattern, min, max y Constraint Validation API, sin sustituir la validación del servidor.
<labelfor="username">Usuario</label><inputid="username"name="username"requiredpattern="[a-z0-9_]{3,20}"aria-describedby="username-help username-error"><pid="username-help">
Entre 3 y 20 caracteres: minúsculas, números o guion bajo.
</p><pid="username-error"hidden></p>
Las reglas deben conocerse antes del error. Al fallar:
En formularios largos puede añadirse un resumen al inicio:
HTML
<divid="error-summary"tabindex="-1"role="alert"><h2>Corrige los siguientes campos</h2><ul><li><ahref="#email">Ingresa un correo válido.</a></li></ul></div>
Mueve foco al resumen después de un envío fallido cuando ayuda a comprender el resultado. Los links llevan a cada campo.
No uses role="alert" en contenido presente desde carga; resérvalo para cambios importantes dinámicos.
:invalid puede aplicar desde la carga antes de interacción. Pseudoclases orientadas a interacción, cuando tienen soporte suficiente, evitan mostrar todo como error inmediatamente.
pattern utiliza una expresión regular bajo reglas del navegador y debe coincidir con todo el valor.
No escribas patterns demasiado complejos para datos como nombres, emails internacionales o direcciones. La validación restrictiva puede rechazar usuarios reales.