0Pricing
HTML Academy · Lección

La Constraint Validation API

Consulte los estados de validez y compruebe las restricciones con JavaScript

La Constraint Validation API es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.

Validación sin JavaScript

HTML5 introdujo la validación integrada de formularios mediante atributos: required, type="email", type="number", min, max, pattern, minlength, maxlength. El navegador valida automáticamente al enviar el formulario y muestra mensajes de error, sin necesidad de JS.

<input type="email" name="email" required>
<input type="number" name="age" min="18" max="120" required>
<input type="text" name="phone" pattern="\d{10}" required>

Selectores de validación de CSS

:invalid coincide con los campos que no superan la validación; :valid coincide con los campos válidos. :user-invalid (moderno) coincide solo después de que el usuario interactúa, lo que evita mostrar bordes rojos en un formulario intacto. Utilice estas pseudoclases para aplicar estilos a los errores.

input:user-invalid {
  border-color: red;
}
input:user-invalid + .error {
  display: block;
}

El objeto ValidityState

Cada control de formulario expone una propiedad validity: un objeto ValidityState con indicadores booleanos: valid, valueMissing, typeMismatch, patternMismatch, rangeUnderflow, tooShort, etc. Inspecciónelo para decidir qué error mostrar.

const input = form.querySelector("input[type=email]");
if (input.validity.typeMismatch) {
  showError(input, "Please enter a valid email address");
}

Método checkValidity

input.checkValidity() devuelve true si el valor cumple todas las restricciones y false en caso contrario. form.checkValidity() comprueba todo el formulario. Es útil para realizar comprobaciones programáticas antes de hacer una solicitud AJAX o de permitir que el usuario avance en un asistente.

Método reportValidity

input.reportValidity() se comporta como checkValidity, pero además activa la información emergente integrada del navegador y enfoca el primer campo no válido. Utilícelo cuando quiera obtener la interfaz nativa sin esfuerzo; use checkValidity cuando quiera controlar completamente la presentación de los errores.

Personalizar mensajes integrados

Es posible que los mensajes predeterminados del navegador ("Complete este campo") no coincidan con su tono o idioma. Sobrescríbalos con input.setCustomValidity("Enter a valid coupon code"). El campo seguirá siendo no válido hasta que borre el mensaje con setCustomValidity("").

novalidate desactiva la interfaz del navegador

Añada novalidate al formulario para suprimir el comportamiento de validación predeterminado del navegador. Es útil al implementar una presentación de errores completamente personalizada; el formulario se enviará independientemente de que hubiera superado la validación, por lo que debe comprobarlo mediante código antes de enviarlo.

Escuchar eventos invalid

Cada control dispara un evento invalid cuando falla la validación. Escúchelo para suprimir la información emergente predeterminada y mostrar un mensaje personalizado: input.addEventListener("invalid", (e) => { e.preventDefault(); showError(input); }).

pattern con expresiones regulares

El atributo pattern contiene una expresión regular de JavaScript con la que el valor debe coincidir por completo (no es necesario usar los anclajes ^ y $; se incluyen implícitamente). Combínelo con el atributo title para describir el formato esperado a los usuarios.

La validación del lado del servidor sigue siendo necesaria

La validación de HTML es una comodidad para los usuarios; cualquiera puede omitirla editando el DOM. Vuelva a validar siempre en el servidor. Las restricciones de HTML existen para mejorar la experiencia de usuario (comentarios inmediatos y menos solicitudes), no para proporcionar seguridad.

Combinar varias restricciones

Las restricciones se acumulan: <input type="number" min="18" max="120" required step="1"> debe estar presente, ser un entero y encontrarse entre 18 y 120. El navegador indica qué restricción específica falló mediante los indicadores de ValidityState, para que pueda mostrar el mensaje adecuado.

Comprobación de conocimientos

¿En qué se diferencia la pseudoclase CSS :user-invalid de :invalid?

Resumen

Los atributos de validación nativa (required, type, pattern, min, max) y la API de ValidityState proporcionan una potente validación del lado del cliente sin JS de forma predeterminada. CSS :user-invalid aplica estilos a los errores después de la interacción. checkValidity/reportValidity permiten realizar comprobaciones programáticas. setCustomValidity reemplaza los mensajes predeterminados. Vuelva a validar siempre en el servidor.

Preguntas frecuentes

¿La lección «La Constraint Validation API» es gratis?

Sí — el texto completo de «La Constraint Validation API» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.

¿Qué aprenderé en «La Constraint Validation API»?

Consulte los estados de validez y compruebe las restricciones con JavaScript Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar HTML Academy?

No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «La Constraint Validation API»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de HTML Academy?

Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. La API FormData
  2. La Constraint Validation API
  3. reportValidity y setCustomValidity
  4. Eventos de restablecimiento de formularios y gestión del estado
← Volver a HTML Academy