// Marca para comprobar que el script carga
console.log("🔥 Horoscopante: JS inyectado en el form");
document.addEventListener("DOMContentLoaded", () => {
const dobInput = document.getElementsByName('dob')[0];
const tobInput = document.getElementsByName('tob')[0];
const placeInput = document.getElementsByName('birthplace')[0];
const latInput = document.getElementsByName('lat')[0];
const l'lon')[0];
const form = placeInput.closest('form');
const submitBtn = form.querySelector('button[type=submit], input[type=submit]');
// UI de búsqueda
placeInput.insertAdjacentHTML("afterend", `
`);
const btn = document.getElementById("search-place");
const select = document.getElementById("place-options");
const err = document.getElementById("place-error");
// Control de habilitado
function updateSubmit() {
const ok = dobInput.value.trim() &&
tobInput.value.trim() &&
latInput.value.trim() &&
lonInput.value.trim();
submitBtn.disabled = !ok;
}
submitBtn.disabled = true;
[dobInput, tobInput, placeInput, latInput, lonInput].forEach(el =>
el.addEventListener('input', updateSubmit)
);
select.addEventListener('change', updateSubmit);
// Al tipear borramos coords
placeInput.addEventListener('input', () => {
latInput.value = "";
lonInput.value = "";
err.textC;
select.style.display = "none";
updateSubmit();
});
// Errores
function showError(msg) {
err.textC
select.style.display = "none";
}
function clearError() {
err.textC;
}
// Guarda en localStorage
function guardarDatosUsuario() {
localStorage.setItem("datosUsuario", JSON.stringify({
dob: dobInput.value.trim(),
tob: tobInput.value.trim(),
birthplace: placeInput.value.trim(),
lat: latInput.value.trim(),
lon: lonInput.value.trim()
}));
}
// Carga inicial
const datos = JSON.parse(localStorage.getItem("datosUsuario") || "");
dobInput.value = datos.dob || "";
tobInput.value = datos.tob || "";
placeInput.value = datos.birthplace || "";
latInput.value = datos.lat || "";
lonInput.value = datos.lon || "";
updateSubmit();
[dobInput, tobInput].forEach(el =>
el.addEventListener('input', guardarDatosUsuario)
);
// Búsqueda Nominatim
btn.addEventListener("click", () => {
clearError();
select.innerHTML = "";
select.style.display = "none";
const q = placeInput.value.trim();
if (q.length r.json())
.then(list => {
btn.textC;
if (!list.length) return showError("No encontramos esa ciudad.");
list.forEach(item => {
const o = document.createElement("option");
o.value = `${item.lat}|${item.lon}`;
o.text = item.display_name;
select.appendChild(o);
});
select.style.display = "block";
})
.catch(() => {
btn.textC;
showError("Error conectando con Nominatim.");
});
});
// Selección de ciudad
select.addEventListener("change", () => {
const [la, lo] = select.value.split("|");
placeInput.value = select.options[select.selectedIndex].text;
latInput.value = la;
lonInput.value = lo;
select.style.display = "none";
clearError();
guardarDatosUsuario();
updateSubmit();
});
// Envío de formulario
form.addEventListener("submit", e => {
if (submitBtn.disabled) {
e.preventDefault();
return showError("Completa fecha, hora y selecciona tu ciudad.");
}
// Aquí metes tu fetch a la API, historial y redirección…
console.log("✅ Enviando formulario con datos:", {
dob: dobInput.value, tob: tobInput.value,
birthplace: placeInput.value,
lat: latInput.value, lon: lonInput.value
});
});
});