fix: selección de empresa/convenio rota por JSON en atributo HTML
JSON.stringify(e) dentro de onmousedown="..." producía comillas dobles que el parser HTML interpretaba como cierre del atributo, dejando la función con un objeto incompleto. Ahora los resultados se guardan en _empresaResultados[] y el handler pasa solo el índice numérico. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
c22c38a58f
commit
123ab0e034
@@ -2142,6 +2142,7 @@ function resetCheckboxes() {
|
||||
// ── Empresa / Convenio ────────────────────────────────────────
|
||||
let _empresaActiva = null;
|
||||
let _empresaBusqTimer;
|
||||
let _empresaResultados = [];
|
||||
|
||||
function buscarEmpresa() {
|
||||
clearTimeout(_empresaBusqTimer);
|
||||
@@ -2154,12 +2155,12 @@ async function _doEmpresaSearch() {
|
||||
if (q.length < 2) { ul.classList.add('d-none'); return; }
|
||||
const res = await fetch(`${BASE_URL_API_LAB}empresas.php?action=list&search=${encodeURIComponent(q)}&activa=1&limit=10`);
|
||||
const j = await res.json();
|
||||
const list = j.empresas || [];
|
||||
if (!list.length) { ul.innerHTML = '<li class="px-3 py-2 text-muted small">Sin resultados</li>'; ul.classList.remove('d-none'); return; }
|
||||
ul.innerHTML = list.map(e => `
|
||||
_empresaResultados = j.empresas || [];
|
||||
if (!_empresaResultados.length) { ul.innerHTML = '<li class="px-3 py-2 text-muted small">Sin resultados</li>'; ul.classList.remove('d-none'); return; }
|
||||
ul.innerHTML = _empresaResultados.map((e, i) => `
|
||||
<li class="px-3 py-2 cursor-pointer hover-bg"
|
||||
style="cursor:pointer;border-bottom:1px solid #f1f5f9"
|
||||
onmousedown="seleccionarEmpresa(${JSON.stringify(e)})">
|
||||
onmousedown="_seleccionarEmpresaIdx(${i})">
|
||||
<div class="fw-semibold small">${escHtml(e.nombre)}</div>
|
||||
<div class="text-muted" style="font-size:.75rem">NIT ${escHtml(e.nit)}${e.tarifa_nombre ? ' · ' + escHtml(e.tarifa_nombre) : ''}</div>
|
||||
</li>
|
||||
@@ -2167,6 +2168,10 @@ async function _doEmpresaSearch() {
|
||||
ul.classList.remove('d-none');
|
||||
}
|
||||
|
||||
function _seleccionarEmpresaIdx(i) {
|
||||
seleccionarEmpresa(_empresaResultados[i]);
|
||||
}
|
||||
|
||||
async function seleccionarEmpresa(e) {
|
||||
document.getElementById('empresa-resultados').classList.add('d-none');
|
||||
document.getElementById('empresa-buscador').classList.add('d-none');
|
||||
|
||||
Reference in New Issue
Block a user