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:
co-authored by
Claude Sonnet 4.6
parent
67f6e23ffd
commit
c1cb5906a9
@@ -801,7 +801,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
oninput="buscarDiag()"
|
oninput="buscarDiag()"
|
||||||
onblur="setTimeout(()=>document.getElementById('diag-resultados').classList.add('d-none'),150)"
|
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">
|
<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"
|
<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>
|
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.innerHTML = '<li class="px-3 py-2 text-muted small">Sin resultados</li>';
|
||||||
ul.classList.remove('d-none'); return;
|
ul.classList.remove('d-none'); return;
|
||||||
}
|
}
|
||||||
ul.innerHTML = _diagResultados.map((d, i) => `
|
ul.innerHTML = _diagResultados.map(d => `
|
||||||
<li class="px-3 py-2" style="cursor:pointer;border-bottom:1px solid #f1f5f9"
|
<li class="px-3 py-2 diag-item" style="cursor:pointer;border-bottom:1px solid #f1f5f9"
|
||||||
onmousedown="seleccionarDiag(${JSON.stringify(d.cod_diag)},${JSON.stringify(d.concepto)})">
|
data-cod="${escHtml(d.cod_diag)}" data-concepto="${escHtml(d.concepto)}">
|
||||||
<span class="fw-semibold small">${escHtml(d.cod_diag)}</span>
|
<span class="fw-semibold small">${escHtml(d.cod_diag)}</span>
|
||||||
<span class="text-muted small ms-2">${escHtml(d.concepto)}</span>
|
<span class="text-muted small ms-2">${escHtml(d.concepto)}</span>
|
||||||
</li>`).join('');
|
</li>`).join('');
|
||||||
ul.classList.remove('d-none');
|
ul.classList.remove('d-none');
|
||||||
}
|
}
|
||||||
function seleccionarDiag(cod, concepto) {
|
function seleccionarDiag(cod) {
|
||||||
document.getElementById('inp-diag').value = cod;
|
document.getElementById('inp-diag').value = cod;
|
||||||
document.getElementById('diag-resultados').classList.add('d-none');
|
document.getElementById('diag-resultados').classList.add('d-none');
|
||||||
_diagResultados = [];
|
_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 ──────────────────────────────────────────
|
// ── Motor de precios ──────────────────────────────────────────
|
||||||
let _recalcTimer;
|
let _recalcTimer;
|
||||||
|
|||||||
Reference in New Issue
Block a user