fix: autocomplete CIE-10 no seleccionaba por comillas rotas en onmousedown

Reemplaza JSON.stringify en atributo HTML por data-atributos + event
delegation, evitando que las comillas dobles rompan el handler.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-17 17:23:11 -05:00
co-authored by Claude Sonnet 4.6
parent 67f6e23ffd
commit c1cb5906a9
+9 -5
View File
@@ -801,7 +801,7 @@ document.addEventListener('DOMContentLoaded', function() {
autocomplete="off"
oninput="buscarDiag()"
onblur="setTimeout(()=>document.getElementById('diag-resultados').classList.add('d-none'),150)"
onkeydown="if(event.key==='Enter'&&_diagResultados.length){event.preventDefault();seleccionarDiag(_diagResultados[0].cod_diag,_diagResultados[0].concepto);}">
onkeydown="if(event.key==='Enter'&&_diagResultados.length){event.preventDefault();seleccionarDiag(_diagResultados[0].cod_diag);}">
<div class="position-relative">
<ul id="diag-resultados" class="list-unstyled mb-0 border rounded bg-white shadow-sm position-absolute w-100 d-none"
style="z-index:200;max-height:200px;overflow-y:auto;top:2px"></ul>
@@ -2422,19 +2422,23 @@ async function _doDiagSearch() {
ul.innerHTML = '<li class="px-3 py-2 text-muted small">Sin resultados</li>';
ul.classList.remove('d-none'); return;
}
ul.innerHTML = _diagResultados.map((d, i) => `
<li class="px-3 py-2" style="cursor:pointer;border-bottom:1px solid #f1f5f9"
onmousedown="seleccionarDiag(${JSON.stringify(d.cod_diag)},${JSON.stringify(d.concepto)})">
ul.innerHTML = _diagResultados.map(d => `
<li class="px-3 py-2 diag-item" style="cursor:pointer;border-bottom:1px solid #f1f5f9"
data-cod="${escHtml(d.cod_diag)}" data-concepto="${escHtml(d.concepto)}">
<span class="fw-semibold small">${escHtml(d.cod_diag)}</span>
<span class="text-muted small ms-2">${escHtml(d.concepto)}</span>
</li>`).join('');
ul.classList.remove('d-none');
}
function seleccionarDiag(cod, concepto) {
function seleccionarDiag(cod) {
document.getElementById('inp-diag').value = cod;
document.getElementById('diag-resultados').classList.add('d-none');
_diagResultados = [];
}
document.getElementById('diag-resultados').addEventListener('mousedown', function(e) {
const li = e.target.closest('.diag-item');
if (li) { e.preventDefault(); seleccionarDiag(li.dataset.cod); }
});
// ── Motor de precios ──────────────────────────────────────────
let _recalcTimer;