Saltar al contenido

API de Validación de Restricciones de JavaScript

JavaScript es un lenguaje esencial para el desarrollo web, que permite contenido dinámico y una interacción mejorada con el usuario. Un aspecto crítico de JavaScript en formularios web es la API de Validación de Restricciones de HTML5. Esta guía proporcionará una exploración en profundidad de la API de Validación de Restricciones, complementada con ejemplos de código prácticos para ayudar tanto a desarrolladores novatos como experimentados a implementar una validación de formularios robusta de manera efectiva.

Introducción a la API de Validación de Restricciones de HTML5

La API de Validación de Restricciones de HTML5 proporciona un mecanismo para la validación nativa en el lado del cliente de los elementos de formulario, mejorando la experiencia del usuario al detectar errores antes de enviar el formulario. Esto reduce la necesidad de procesamiento en el servidor y puede dar lugar a aplicaciones web más receptivas.

Configuración de tu primera validación

Antes de adentrarse en reglas de validación complejas, es importante comprender cómo aplicar validaciones básicas. A continuación se muestra un ejemplo sencillo de cómo utilizar la API de Validación de Restricciones para verificar que un campo de entrada no esté vacío.

WARNING

Agregar el atributo novalidate a un formulario desactiva la validación predeterminada del navegador. Esto te permite implementar lógica de validación personalizada, pero significa que debes gestionar toda la validación tú mismo. Utiliza la validación personalizada para proporcionar una retroalimentación al usuario más flexible o detallada de lo que ofrece la validación integrada del navegador.


html
<form id="registrationForm" novalidate>
    <label for="username">Username:</label>
    <input type="text" id="username" required />
    <button type="submit">Register</button>
    <span id="usernameError" style="color: red;"></span>
    <span id="registerSuccess" style="color: green; display: none;">Registration successful!</span>
</form>

<script>
document.getElementById('registrationForm').addEventListener('submit', function(event) {
    event.preventDefault();
    const input = document.getElementById('username');
    const usernameError = document.getElementById('usernameError');
    const registerSuccess = document.getElementById('registerSuccess');

    if (!input.checkValidity()) {
        usernameError.textContent = 'Username is required.';
        registerSuccess.style.display = 'none'; // Hide success message if visible
    } else {
        usernameError.textContent = ''; // Clear error message
        registerSuccess.textContent = 'Registration successful!';
        registerSuccess.style.display = 'block'; // Show success message
        input.value = ''; // Reset the username input
    }
});
</script>

Este fragmento de código demuestra la configuración básica donde se utiliza la comprobación input.checkValidity() para obligar a que un campo sea obligatorio. El formulario generará un mensaje de error si el campo de nombre de usuario se deja vacío.

Implementación de mensajes de validación personalizados

Superando los mensajes de alerta predeterminados del navegador, puedes crear una experiencia de usuario más integrada mostrando mensajes de error personalizados dentro del diseño HTML. Así es como puedes implementarlo:

Ten en cuenta que la validación de correo electrónico predeterminada de HTML5 puede no requerir un dominio de nivel superior, lo que permite que entradas como w3docs@aol se consideren válidas. Para garantizar que las direcciones de correo electrónico incluyan un dominio, hemos añadido un patrón más estricto .+@.+\..+ al campo de entrada de correo electrónico. Esta expresión regular requiere que las direcciones de correo electrónico contengan al menos un punto después del símbolo @, mejorando la validación para reflejar con mayor precisión los formatos de correo electrónico típicos.


html
<form id="contactForm" novalidate>
    <label for="email">Email:</label>
    <input type="email" id="email" pattern=".+@.+\..+" required />
    <button type="submit">Submit</button>
    <span id="emailError" style="color: red"></span>
    <span id="successMessage" style="color: green; display: none;">Submission successful!</span>
</form>

<script>
document.getElementById("contactForm").addEventListener("submit", function (event) {
    event.preventDefault(); // Prevent default form submission

    const email = document.getElementById("email");
    const errorMessage = document.getElementById("emailError");
    const successMessage = document.getElementById("successMessage");

    if (!email.checkValidity()) {
        errorMessage.textContent = "Please enter a valid email address, including a domain."; // Display custom error message
        successMessage.style.display = "none"; // Hide success message if visible
    } else {
        errorMessage.textContent = ""; // Clear the error message
        successMessage.textContent = "Submission successful!";
        successMessage.style.display = "block"; // Show success message
        email.value = ""; // Reset the email input
    }
});
</script>

Este código mejora la experiencia del usuario proporcionando retroalimentación inmediata e integrada sobre la validez de la entrada de correo electrónico.

Mejora de las validaciones de formularios con patrones

A veces, son necesarias validaciones más específicas, como verificar que la entrada se ajuste a un determinado patrón. Esto se utiliza comúnmente para números de teléfono, códigos postales y campos similares.


html
<form id="signupForm" novalidate>
    <label for="phone">Phone (XXX-XXX-XXXX):</label>
    <input type="tel" id="phone" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" required />
    <button type="submit">Sign Up</button>
    <span id="phoneError" style="color:red;"></span>
    <span id="successMessage" style="color:green; display:none;">Submission successful!</span>
</form>

<script>
document.getElementById('signupForm').addEventListener('submit', function(event) {
    const phone = document.getElementById('phone');
    const phoneError = document.getElementById('phoneError');
    const successMessage = document.getElementById('successMessage');

    if (!phone.checkValidity()) {
        phoneError.textContent = 'Please enter a phone number in the format XXX-XXX-XXXX.';
        successMessage.style.display = 'none'; // Hide success message if present
    } else {
        phoneError.textContent = '';
        phone.value = ''; // Reset the input field
        successMessage.textContent = 'Submission successful!';
        successMessage.style.display = 'block'; // Show success message
    }
});
</script>

Este ejemplo utiliza el atributo pattern para especificar que el número de teléfono debe coincidir con un formato específico, mejorando la calidad de los datos recopilados a través del formulario.

Conclusión

La API de Validación de Restricciones de HTML5 es una herramienta poderosa para los desarrolladores web que buscan implementar la validación de formularios en el lado del cliente. No solo mejora la experiencia del usuario al proporcionar retroalimentación inmediata, sino que también reduce la carga del servidor. Siguiendo los ejemplos proporcionados en esta guía, puedes crear formularios web más robustos, eficientes y fáciles de usar. Para obtener retroalimentación en tiempo real, considera también escuchar los eventos input o change junto con el controlador de envío.

Practice

¿Qué funciones están disponibles con la API de Validación de JavaScript?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.