This commit is contained in:
2025-05-06 15:31:13 -06:00
parent db91190c8b
commit e56f1dd371
2 changed files with 97 additions and 116 deletions

View File

@@ -18,6 +18,7 @@ $color2 = explode(',', $config['colores_primarios'] ?? '#003366,#0055A5')
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title><?= htmlspecialchars($siglas) ?> | Registro de Importador</title>
@@ -67,7 +68,8 @@ $color2 = explode(',', $config['colores_primarios'] ?? '#003366,#0055A5')
font-weight: 500;
}
.form-control, .form-select {
.form-control,
.form-select {
border-radius: 6px;
}
@@ -89,6 +91,7 @@ $color2 = explode(',', $config['colores_primarios'] ?? '#003366,#0055A5')
}
</style>
</head>
<body>
<!-- Navbar institucional -->
@@ -119,7 +122,7 @@ $color2 = explode(',', $config['colores_primarios'] ?? '#003366,#0055A5')
<!-- Contenedor del formulario -->
<div class="container card-form">
<form action="/IMPORTADORES/registro/enviar" method="POST" enctype="multipart/form-data" id="formRegistro">
<div class="row g-3">
@@ -157,86 +160,73 @@ $color2 = explode(',', $config['colores_primarios'] ?? '#003366,#0055A5')
</div>
</div>
</form>
<script>
document.getElementById("formRegistro").addEventListener("submit", function(event) {
const rfcInput = document.querySelector('input[name="rfc"]');
const emailInput = document.querySelector('input[name="email"]');
const phoneInput = document.querySelector('input[name="phone"]');
const rfc = rfcInput.value.toUpperCase();
const email = emailInput.value.trim();
const phone = phoneInput.value.trim();
// Validación RFC
const rfcRegex = /^[A-ZÑ&]{3,4}\d{6}[A-Z0-9]{3}$/;
if (!rfcRegex.test(rfc)) {
alert("RFC inválido. Asegúrate de que siga el formato correcto.");
rfcInput.focus();
event.preventDefault();
return;
} else {
rfcInput.value = rfc; // Convertir a mayúsculas
}
// Validación correo - solo minúsculas y con cualquier dominio
const correoRegex = /^[a-z0-9._+-]+@[a-z0-9.-]+\.[a-z]{2,}$/;
if (!correoRegex.test(email)) {
e.preventDefault(); // Detiene el envío del formulario
alert("No es una dirección de correo válida (solo minúsculas, sin acentos ni caracteres especiales).");
emailInput.focus();
}
// Validación teléfono
const phoneRegex = /^\d{3}\s\d{7}$/;
if (!phoneRegex.test(phone)) {
alert("El teléfono debe tener el formato 3 dígitos, espacio, 7 dígitos (ej. 123 4567890)");
phoneInput.focus();
event.preventDefault();
return;
}
// Validación de solo números sin espacios para verificación
const digitsOnly = phone.replace(/\s/g, "");
if (digitsOnly.length !== 10 || isNaN(digitsOnly)) {
alert("El teléfono debe contener exactamente 10 dígitos numéricos.");
phoneInput.focus();
event.preventDefault();
return;
}
});
</script>
</div>
<div class="container ">
<div class="alert alert-warning" role="alert">
Una vez que envíes tu solicitud, será revisada manualmente por la agencia aduanal.
<div class="alert alert-warning" role="alert">
Una vez que envíes tu solicitud, será revisada manualmente por la agencia aduanal.
Recibirás una notificación por correo electrónico cuando tu registro sea aprobado, junto con las instrucciones para activar tu cuenta e iniciar sesión en la plataforma.
</div>
</div>
<!-- FOOTER -->
<footer class="fixed-bottom">
&copy; <?= date('Y') ?> <?= htmlspecialchars($siglas) ?> · <?= htmlspecialchars($nombre) ?>
<!-- FOOTER -->
<footer class="fixed-bottom">
&copy; <?= date('Y') ?> <?= htmlspecialchars($siglas) ?> · <?= htmlspecialchars($nombre) ?>
</footer>
<!-- Validación JS -->
<script>
document.getElementById('formRegistro').addEventListener('submit', function (e) {
document.getElementById('formRegistro').addEventListener('submit', function(e) {
const rfcInput = document.querySelector('input[name="rfc"]');
const emailInput = document.querySelector('input[name="email"]');
const phoneInput = document.querySelector('input[name="phone"]');
const archivo = document.getElementById('opinion_file').files[0];
const recaptcha = grecaptcha.getResponse();
const rfc = rfcInput.value.trim().toUpperCase();
const email = emailInput.value.trim();
const phone = phoneInput.value.trim();
// Expresiones regulares
const correoRegex = /^[a-z0-9._+-]+@[a-z0-9.-]+\.[a-z]{2,}$/;
const rfcRegex = /^[A-ZÑ&]{3,4}\d{6}[A-Z0-9]{3}$/;
const telefonoRegex = /^\d{3}\s\d{7}$/;
// Validación de correo
if (!correoRegex.test(email)) {
e.preventDefault();
Swal.fire("Correo inválido", "No es una dirección de correo válida. Solo se permiten minúsculas.", "error");
emailInput.focus();
return;
}
// Validación de RFC
if (!rfcRegex.test(rfc)) {
e.preventDefault();
Swal.fire("RFC inválido", "El RFC debe tener 12 o 13 caracteres con el formato correcto (ej. ABC123456XYZ).", "error");
rfcInput.focus();
return;
}
// Validación de teléfono
if (!telefonoRegex.test(phone)) {
e.preventDefault();
Swal.fire("Teléfono inválido", "Debe tener 10 dígitos en el formato: 3 dígitos (LADA), espacio, y 7 dígitos. Ejemplo: 123 4567890", "error");
phoneInput.focus();
return;
}
// Validación de archivo PDF
if (!archivo || archivo.type !== 'application/pdf') {
e.preventDefault();
Swal.fire("Error", "Solo se permite subir archivos PDF.", "error");
return;
}
// Validación de reCAPTCHA
if (recaptcha.length === 0) {
e.preventDefault();
Swal.fire("Verificación requerida", "Por favor completa el reCAPTCHA.", "warning");
@@ -246,4 +236,5 @@ $color2 = explode(',', $config['colores_primarios'] ?? '#003366,#0055A5')
</script>
</body>
</html>
</html>