document.addEventListener("DOMContentLoaded", function () { const buscarBtn = document.getElementById("buscarBtn"); const paisSelect = document.getElementById("id_pais"); const inputCodigoPostal = document.getElementById("codigo_postal"); const inputButtonBuscarCodigoPostal = document.getElementById("buscarBtn"); const estadoSelect = document.getElementById("id_estado"); const municipioSelect = document.getElementById("id_municipio"); const coloniaSelect = document.getElementById("id_colonia"); const giroSelect = document.getElementById("id_giro"); llenarSelectGiro(); // Añadir un evento de cambio al select de país paisSelect.addEventListener("change", function() { // Si el país es México, habilitar el campo de código postal if (paisSelect.value === "1") { inputCodigoPostal.removeAttribute("disabled"); inputButtonBuscarCodigoPostal.removeAttribute("disabled"); } else { // Si el país no es México, deshabilitar el campo de código postal inputCodigoPostal.setAttribute("disabled", "disabled"); inputButtonBuscarCodigoPostal.setAttribute("disabled", "disabled"); } }); //Añadir un evento al boton de buscar buscarBtn.addEventListener("click", function () { let inputCodigoPostal = document.getElementById("codigo_postal").value; //verificar si el codigo postal esta vacio if (inputCodigoPostal) { // Limpia los selects antes de llenarlos estadoSelect.innerHTML = ""; municipioSelect.innerHTML = ""; coloniaSelect.innerHTML = ""; // Construye la URL para la solicitud let url = "./controllers/CatalogosController.php?codigo_postal=" + encodeURIComponent(inputCodigoPostal); // Realiza una solicitud HTTP GET a la URL especificada fetch(url) .then(response => { //console.log("Estado de la respuesta:", response.status); //console.log("Contenido de la respuesta:", response.json()); // Verifica si la respuesta del servidor es exitosa if (!response.ok) { throw new Error("Error en la respuesta del servidor"); } // Convertir la respuesta a JSON return response.json(); }) .then(data => { // Verifica si se recibieron datos if (data.length > 0) { // Quitar disable a los selects estadoSelect.removeAttribute("disabled"); estadoSelect.setAttribute("required", "required"); municipioSelect.removeAttribute("disabled"); municipioSelect.setAttribute("required", "required"); coloniaSelect.removeAttribute("disabled"); coloniaSelect.setAttribute("required", "required"); //Crea conjuntos para almacenar estados, ciudades y colonias let estados = new Map(); let municipios = new Map(); let colonias = new Map(); // Itera sobre cada fila de datos recibidos data.forEach(row => { console.log(row); estados.set(row['id_estado'], row['estado']); municipios.set(row['id_municipio'], row['municipio']); colonias.set(row['id_colonia'], row['colonia']); }); // Añade las opciones de estados al elemento select for (let [id_estado, estado] of estados) { estadoSelect.innerHTML += ""; } // Añade las opciones de ciudades al elemento select for (let [id_municipio, municipio] of municipios) { municipioSelect.innerHTML += ""; } // Añade las opciones de colonias al elemento select for (let [id_colonia, colonia] of colonias) { coloniaSelect.innerHTML += ""; } } else { alert("No se encontraron datos para el código postal ingresado."); } }) .catch(error => { console.error("Error en la solicitud:", error); }); } else { alert("Por favor, ingrese un código postal."); } }); function llenarSelectGiro() { // URL para la solicitud let url = "./controllers/CatalogosController.php?obtener=giros"; // Realiza una solicitud HTTP GET a la URL especificada fetch(url) .then(response => { // Verifica si la respuesta del servidor es exitosa if (!response.ok) { throw new Error("Error en la respuesta del servidor"); } // Convertir la respuesta a JSON return response.json(); }) .then(data => { // Verifica si se recibieron datos if (data.length > 0) { // Añade las opciones de giros al elemento select data.forEach(row => { giroSelect.innerHTML += ""; }); } else { alert("No se encontraron datos para los giros."); } }) .catch(error => { console.error("Error en la solicitud:", error); }); } });