From 65b18facdbae1ae4032498a9993f26f1669cae02 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 16 Jul 2026 10:36:41 -0500 Subject: [PATCH] fix: checkbox _c8j2g16 usa name[] en HTML, no name exacto MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El campo tipo examen es checkbox → HTML renderiza name="_c8j2g16[]". Todos los querySelector y el listener comparaban name="_c8j2g16" exacto → nunca matcheaban → visibilidad de secciones y panel de config nunca se activaban. Añade _mpGetExamName()/_mpSetExamChecked() que aceptan ambas variantes y los usa en todos los puntos de uso. Co-Authored-By: Claude Sonnet 4.6 --- ver_formulario_enviado.php | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/ver_formulario_enviado.php b/ver_formulario_enviado.php index c1e462f..067dcb9 100644 --- a/ver_formulario_enviado.php +++ b/ver_formulario_enviado.php @@ -1334,11 +1334,22 @@ function _mpApplyExamVisibility(selectedExam) { }); } +// Helper: leer examen seleccionado (funciona para radio name=_c8j2g16 y checkbox name=_c8j2g16[]) +function _mpGetExamName() { + var el = document.querySelector('[name="_c8j2g16"]:checked,[name="_c8j2g16[]"]:checked'); + return el ? el.value : null; +} +function _mpSetExamChecked(name) { + var esc = name.replace(/"/g, '\\"'); + var el = document.querySelector('[name="_c8j2g16"][value="' + esc + '"],[name="_c8j2g16[]"][value="' + esc + '"]'); + if (el) el.checked = true; +} + // Escuchar selección de tipo de examen document.addEventListener('change', function(e) { var el = e.target; - if (el.name !== '_c8j2g16') return; - var examName = (el.type === 'checkbox' && !el.checked) ? null : el.value; + if (el.name.replace(/\[\]$/, '') !== '_c8j2g16') return; + var examName = _mpGetExamName(); _mpApplyExamVisibility(examName); // Panel de configuración solo en modo turnero y si aún no está configurado if (!_mpModoTurnero || _mpTomasConfig !== null || !examName) return; @@ -1349,8 +1360,7 @@ document.addEventListener('change', function(e) { // Al cargar: aplicar visibilidad (sin examen = ocultar todo) document.addEventListener('DOMContentLoaded', function() { - var radio = document.querySelector('[name="_c8j2g16"]:checked'); - var examName = radio ? radio.value : null; + var examName = _mpGetExamName(); // Restaurar selección de examen tras el reload del panel de config if (!examName) { try { @@ -1358,8 +1368,7 @@ document.addEventListener('DOMContentLoaded', function() { if (saved) { sessionStorage.removeItem('_mpExamRestore'); examName = saved; - var el = document.querySelector('[name="_c8j2g16"][value="' + saved.replace(/"/g, '\\"') + '"]'); - if (el) el.checked = true; + _mpSetExamChecked(saved); } } catch(e) {} } @@ -1371,7 +1380,7 @@ document.addEventListener('DOMContentLoaded', function() { // Botón "Usar todas" document.getElementById('mp-cfg-todas').addEventListener('click', function() { - var examName = (document.querySelector('[name="_c8j2g16"]:checked') || {}).value || ''; + var examName = _mpGetExamName() || ''; var cfg = {}; document.querySelectorAll('.mp-cfg-chk').forEach(function(chk) { if (!cfg[chk.dataset.group]) cfg[chk.dataset.group] = []; @@ -1387,7 +1396,7 @@ document.getElementById('mp-cfg-todas').addEventListener('click', function() { // Botón "Iniciar protocolo" document.getElementById('mp-cfg-iniciar').addEventListener('click', function() { - var examName = (document.querySelector('[name="_c8j2g16"]:checked') || {}).value || ''; + var examName = _mpGetExamName() || ''; var byGroup = {}; document.querySelectorAll('.mp-cfg-chk').forEach(function(chk) { if (!byGroup[chk.dataset.group]) byGroup[chk.dataset.group] = [];