// Insertar el texto dinámicamente en el elemento con id "copyright" document.getElementById("copyright").textContent = `${year}`; const d = document; const $form = d.querySelector(".contact-form"), $inputs = d.querySelectorAll(".contact-form [required]"); $inputs.forEach(input => { const $span = d.createElement("span"); $span.id = input.name; $span.textContent = input.title; $span.classList.add("contact-form-error", "none"); input.insertAdjacentElement("afterend", $span) }); d.addEventListener("keyup", (e) => { if (e.target.matches(".contact-form [required]")) { const $input = e.target; const pattern = $input.pattern || $input.dataset.pattern; const $errorSpan = d.getElementById($input.name); if (pattern && $input.value !== "") { const regex = new RegExp(pattern); const isValid = regex.test($input.value); if (!isValid) { $errorSpan.classList.add("is-active"); } else { $errorSpan.classList.remove("is-active"); } } else { // Si no hay patrón definido, no se muestra mensaje de error $errorSpan.classList.remove("is-active"); } } }); document.addEventListener("DOMContentLoaded", function () { const telefonoInput = document.querySelector('input[name="telefono"]'); const emailInput = document.querySelector('input[name="email"]'); const nombreInput = document.querySelector('input[name="nombre"]'); const desarrolloInput = document.querySelector('input[name="desarrollo"]'); const checkboxTerminos = document.getElementById('terminos'); const botonEnviar = document.getElementById('enviar'); const formulario = document.getElementById("miFormulario"); telefonoInput.addEventListener('keyup', function () { let valor = this.value.trim(); // Eliminar todo lo que no sea dígitos valor = valor.replace(/\D/g, ''); // Limitar a un máximo de 10 caracteres valor = valor.substring(0, 10); // Asignar el valor modificado de vuelta al campo this.value = valor; }); nombreInput.addEventListener('keyup', function (event) { let valor = this.value; let newValue = ''; // Filtrar y mantener solo letras y espacios for (let i = 0; i < valor.length; i++) { const char = valor.charAt(i); if (/^[A-Za-zÁáÉéÍíÓóÚúÜüÑñ\s]$/.test(char)) { newValue += char; } } // Limitar a un máximo de 80 caracteres newValue = newValue.substring(0, 80); // Asignar el valor modificado de vuelta al campo this.value = newValue; }); emailInput.addEventListener('keyup', function (event) { let valor = this.value; // Asignar el valor modificado de vuelta al campo this.value = valor.trim(); // Eliminar espacios en blanco al inicio y final // Limitar a un máximo de 254 caracteres (longitud máxima de un correo electrónico según especificaciones) if (valor.length > 254) { this.value = valor.substring(0, 254); } }); checkboxTerminos.addEventListener('change', function () { botonEnviar.disabled = !this.checked; }); });