{"id":2386,"date":"2026-05-24T20:12:02","date_gmt":"2026-05-25T02:12:02","guid":{"rendered":"https:\/\/revista.cmdpguadalupecr.com\/?page_id=2386"},"modified":"2026-05-24T21:33:40","modified_gmt":"2026-05-25T03:33:40","slug":"canjear","status":"publish","type":"page","link":"https:\/\/revista.cmdpguadalupecr.com\/?page_id=2386","title":{"rendered":"Canjear c\u00f3digo"},"content":{"rendered":"    <div id=\"qm26-canjear\" style=\"max-width:460px;margin:0 auto;padding:24px;border:1px solid #e5e7eb;border-radius:12px;background:#fff;font-family:system-ui,-apple-system,sans-serif;\">\n      <h2 style=\"margin:0 0 6px;font-size:22px;\">Quiniela Mundialista 2026<\/h2>\n      <p style=\"margin:0 0 18px;color:#6b7280;font-size:14px;\">Canjea tu c\u00f3digo de acceso para crear tu cuenta.<\/p>\n      <form id=\"qm26-canjear-form\" style=\"display:flex;flex-direction:column;gap:12px;\">\n        <div style=\"display:flex;flex-direction:column;gap:6px;\">\n          <span style=\"font-size:13px;font-weight:600;\">C\u00f3digo de tarjeta<\/span>\n          <div id=\"qm26-code-row\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap;\">\n            <span style=\"padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;background:#f3f4f6;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;color:#111827;letter-spacing:2px;\">QM26<\/span>\n            <span style=\"color:#9ca3af;font-weight:700;\">-<\/span>\n            <input class=\"qm26-code-grp\" data-idx=\"0\" inputmode=\"text\" autocomplete=\"off\" autocapitalize=\"characters\" spellcheck=\"false\" maxlength=\"4\" value=\"\" placeholder=\"XXXX\" style=\"width:5.5em;padding:10px;border:1px solid #d1d5db;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:18px;font-weight:700;text-align:center;letter-spacing:4px;text-transform:uppercase;\" \/>\n            <span style=\"color:#9ca3af;font-weight:700;\">-<\/span>\n            <input class=\"qm26-code-grp\" data-idx=\"1\" inputmode=\"text\" autocomplete=\"off\" autocapitalize=\"characters\" spellcheck=\"false\" maxlength=\"4\" value=\"\" placeholder=\"XXXX\" style=\"width:5.5em;padding:10px;border:1px solid #d1d5db;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:18px;font-weight:700;text-align:center;letter-spacing:4px;text-transform:uppercase;\" \/>\n            <span style=\"color:#9ca3af;font-weight:700;\">-<\/span>\n            <input class=\"qm26-code-grp\" data-idx=\"2\" inputmode=\"text\" autocomplete=\"off\" autocapitalize=\"characters\" spellcheck=\"false\" maxlength=\"4\" value=\"\" placeholder=\"XXXX\" style=\"width:5.5em;padding:10px;border:1px solid #d1d5db;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:18px;font-weight:700;text-align:center;letter-spacing:4px;text-transform:uppercase;\" \/>\n          <\/div>\n          <small style=\"color:#6b7280;\">Ingres\u00e1 solo los 12 caracteres de tu tarjeta. No hacen falta guiones.<\/small>\n        <\/div>\n        <label style=\"display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600;\">Tu nombre\n          <input name=\"name\" placeholder=\"Juan P\u00e9rez\" style=\"padding:10px;border:1px solid #d1d5db;border-radius:8px;\" \/>\n        <\/label>\n        <label style=\"display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600;\">Usuario (lo que vas a escribir para entrar)\n          <input name=\"username\" required minlength=\"3\" maxlength=\"30\" pattern=\"[A-Za-z0-9_\\-\\.]+\" placeholder=\"juanp\" style=\"padding:10px;border:1px solid #d1d5db;border-radius:8px;\" \/>\n        <\/label>\n        <label style=\"display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600;\">Email\n          <input name=\"email\" type=\"email\" required placeholder=\"juan@ejemplo.com\" style=\"padding:10px;border:1px solid #d1d5db;border-radius:8px;\" \/>\n        <\/label>\n        <label style=\"display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600;\">Contrase\u00f1a (m\u00edn. 8)\n          <input name=\"password\" type=\"password\" required minlength=\"8\" style=\"padding:10px;border:1px solid #d1d5db;border-radius:8px;\" \/>\n        <\/label>\n        <button type=\"submit\" style=\"padding:12px;background:#111827;color:#fff;border:0;border-radius:8px;font-weight:600;cursor:pointer;\">Canjear y entrar<\/button>\n        <div id=\"qm26-canjear-msg\" style=\"font-size:13px;min-height:18px;\"><\/div>\n      <\/form>\n    <\/div>\n    <script>\n    (function(){\n      var f = document.getElementById('qm26-canjear-form');\n      var msg = document.getElementById('qm26-canjear-msg');\n      var grps = Array.prototype.slice.call(document.querySelectorAll('.qm26-code-grp'));\n\n      function clean(s){ return String(s||'').toUpperCase().replace(\/[^A-Z0-9]\/g,''); }\n\n      function distribute(raw, startIdx){\n        var s = clean(raw);\n        \/\/ Si empieza con QM26 (pegado completo), lo descartamos\n        if (s.indexOf('QM26') === 0) s = s.slice(4);\n        var i = startIdx || 0;\n        var pos = 0;\n        while (i < grps.length && pos < s.length) {\n          grps[i].value = s.slice(pos, pos + 4);\n          pos += 4;\n          i++;\n        }\n        \/\/ Foco en el siguiente vac\u00edo\n        for (var j = 0; j < grps.length; j++) {\n          if (!grps[j].value || grps[j].value.length < 4) { grps[j].focus(); return; }\n        }\n        grps[grps.length - 1].focus();\n      }\n\n      grps.forEach(function(inp, idx){\n        inp.addEventListener('input', function(e){\n          var v = clean(inp.value);\n          if (v.length > 4) { distribute(v, idx); return; }\n          inp.value = v;\n          if (v.length === 4 && idx < grps.length - 1) grps[idx + 1].focus();\n        });\n        inp.addEventListener('keydown', function(e){\n          if (e.key === 'Backspace' && !inp.value && idx > 0) {\n            grps[idx - 1].focus();\n          } else if (e.key === 'ArrowLeft' && inp.selectionStart === 0 && idx > 0) {\n            grps[idx - 1].focus();\n          } else if (e.key === 'ArrowRight' && inp.selectionStart === inp.value.length && idx < grps.length - 1) {\n            grps[idx + 1].focus();\n          }\n        });\n        inp.addEventListener('paste', function(e){\n          var t = (e.clipboardData || window.clipboardData).getData('text');\n          if (t) { e.preventDefault(); distribute(t, idx); }\n        });\n        inp.addEventListener('focus', function(){ inp.select(); });\n      });\n\n      f.addEventListener('submit', async function(e){\n        e.preventDefault();\n        var parts = grps.map(function(g){ return clean(g.value); });\n        if (parts.some(function(p){ return p.length !== 4; })) {\n          msg.style.color = '#b91c1c';\n          msg.textContent = 'Complet\u00e1 los 12 caracteres del c\u00f3digo.';\n          return;\n        }\n        var code = 'QM26-' + parts.join('-');\n        msg.textContent = 'Procesando...'; msg.style.color = '#374151';\n        var fd = new FormData(f);\n        var body = { code: code };\n        fd.forEach(function(v,k){ body[k] = (k === 'username') ? String(v).trim() : v; });\n        try {\n          var r = await fetch(\"https:\\\/\\\/revista.cmdpguadalupecr.com\\\/index.php?rest_route=\\\/quiniela\\\/v1\\\/invites\\\/redeem\", {\n            method: 'POST',\n            credentials: 'same-origin',\n            headers: { 'Content-Type': 'application\/json', 'X-WP-Nonce': \"52742eba59\" },\n            body: JSON.stringify(body)\n          });\n          var data = await r.json();\n          if (!r.ok) { msg.style.color = '#b91c1c'; msg.textContent = (data && data.message) || 'Error.'; return; }\n          msg.style.color = '#047857'; msg.textContent = 'Cuenta creada. Entrando...';\n          window.location.replace(data.redirect || '\/quiniela-mundialista-2026\/');\n        } catch (err) {\n          msg.style.color = '#b91c1c'; msg.textContent = 'Error de red.';\n        }\n      });\n\n      \/\/ Foco inicial en el primer grupo vac\u00edo\n      for (var k = 0; k < grps.length; k++) {\n        if (!grps[k].value) { grps[k].focus(); break; }\n      }\n    })();\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-2386","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/revista.cmdpguadalupecr.com\/index.php?rest_route=\/wp\/v2\/pages\/2386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/revista.cmdpguadalupecr.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/revista.cmdpguadalupecr.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/revista.cmdpguadalupecr.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/revista.cmdpguadalupecr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2386"}],"version-history":[{"count":2,"href":"https:\/\/revista.cmdpguadalupecr.com\/index.php?rest_route=\/wp\/v2\/pages\/2386\/revisions"}],"predecessor-version":[{"id":2388,"href":"https:\/\/revista.cmdpguadalupecr.com\/index.php?rest_route=\/wp\/v2\/pages\/2386\/revisions\/2388"}],"wp:attachment":[{"href":"https:\/\/revista.cmdpguadalupecr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}