Contact

Contact form

/* Font (Poppins) */ @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap"); .klf-contact-box{ font-family: "Poppins", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; border-radius:16px; padding:18px; background:#243391FA; color:#fff; box-shadow: 0 10px 26px rgba(0,0,0,.18); } .klf-contact-box label{ display:block; font-weight:600; margin-bottom:6px; font-size:14px; opacity:.95; } .klf-contact-hint{ margin:0 0 12px 0; /* maintenant sous le label */ font-size:12px; opacity:.85; } .klf-contact-box select{ width:100%; padding:12px 12px; border-radius:12px; border:1px solid rgba(255,255,255,.22); background:rgba(255,255,255,.10); color:#fff; font-size:14px; outline:none; transition: all .15s ease; } .klf-contact-box select:focus{ border-color: rgba(255,255,255,.55); box-shadow: 0 0 0 3px rgba(255,255,255,.12); } .klf-contact-box option{ color:#111; /* dropdown list in browser UI */ } .klf-contact-card{ margin-top:16px; padding:16px; border-radius:14px; background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.18); display:none; } .klf-contact-card h3{ margin:0 0 14px 0; font-size:18px; line-height:1.25; font-weight:700; letter-spacing:.1px; } .klf-contact-item{ padding:12px 0; border-top: 1px solid rgba(255,255,255,.14); } .klf-contact-item:first-of-type{ border-top: none; padding-top: 0; } .klf-contact-item-title{ display:flex; align-items:center; gap:10px; font-weight:600; font-size:14px; line-height:1.2; margin:0 0 6px 0; opacity:.98; } .klf-emoji{ font-size:16px; line-height:1; flex: 0 0 auto; } .klf-contact-item-value{ font-size:14px; line-height:1.5; opacity:.95; padding-left:26px; /* align with text after emoji */ word-break: break-word; } .klf-contact-item-value a{ color:#fff; text-decoration:underline; text-underline-offset: 3px; }
Sélectionner une ville pour afficher les coordonnées.
Sélectionner une ville ...KLF AnnecyKLF BordeauxKLF LyonKLF MontpellierKLF Toulouse
(function(){ // Données affichées dans le bloc "coordonnées" const data = { annecy: { title: "KLF Annecy (IFALPES)", address: "3 Rue de Rumilly, 74000 Annecy", phoneDisplay: "+33 4 50 45 38 37", phoneHref: "+33450453837", email: "exam@ifalpes.com" }, bordeaux: { title: "KLF Bordeaux (Newdeal Institut)", address: "Jardin de l’Ars, 2 Parvis Gattebourse, 33800 Bordeaux", phoneDisplay: "+33 9 53 03 16 20", phoneHref: "+33953031620", email: "exam@newdealinstitut.com" }, lyon: { title: "KLF Lyon (Lyon Bleu International)", address: "82 rue Duguesclin, 69006 Lyon", phoneDisplay: "+33 (0)4 37 48 00 26", phoneHref: "+33437480026", email: "exam@lyon-bleu.fr" }, montpellier: { title: "KLF Montpellier (LSF)", address: "6 rue Foch, 34000 Montpellier", phoneDisplay: "+33 4 67 91 31 60", phoneHref: "+33467913160", email: "exam@lsf-france.com" }, toulouse: { title: "KLF Toulouse (Langue Onze)", address: "10 rue des Arts, 31000 Toulouse", phoneDisplay: "+33 (0)5 61 62 54 58", phoneHref: "+33561625458", email: "examen@langueonze.com" } }; // Mapping EXACT des choix Gravity Forms pour le champ label "École" const gfChoiceTextByKey = { annecy: "KLF Annecy (IFAlpes)", bordeaux: "KLF Bordeaux (Newdeal Institut)", lyon: "KLF Lyon (Lyon Bleu International)", montpellier: "KLF Montpellier (LSF)", toulouse: "KLF Toulouse (Langue Onze)" }; const select = document.getElementById("klfCitySelect"); const card = document.getElementById("klfContactCard"); function escapeHtml(str){ return String(str).replace(/[&"']/g, s => ({ "&":"&","":">","\"":""","'":"'" }[s])); } function render(key){ const v = data[key]; if(!v){ card.style.display = "none"; card.innerHTML = ""; return; } card.innerHTML = `

${escapeHtml(v.title)}

Adresse
${escapeHtml(v.address)}
`; card.style.display = "block"; } function normalize(s) { return (s || "").toString().replace(/\s+/g, " ").trim().toLowerCase(); } function findGfFieldContainerByLabel(labelText) { const labels = document.querySelectorAll(".gform_wrapper .gfield_label"); const target = normalize(labelText); for (const lab of labels) { if (normalize(lab.textContent).startsWith(target)) { const field = lab.closest(".gfield"); if (field) return field; } } return null; } function setGfSchoolChoice(choiceText) { const field = findGfFieldContainerByLabel("École"); if (!field) return false; // Cas 1 : Dropdown (select) const gfSelect = field.querySelector("select"); if (gfSelect) { const options = Array.from(gfSelect.options); const opt = options.find(o => normalize(o.textContent) === normalize(choiceText)); if (opt) { gfSelect.value = opt.value; gfSelect.dispatchEvent(new Event("change", { bubbles: true })); return true; } } // Cas 2 : Radios const radios = Array.from(field.querySelectorAll('input[type="radio"]')); if (radios.length) { for (const r of radios) { const label = field.querySelector(`label[for="${r.id}"]`); if (label && normalize(label.textContent) === normalize(choiceText)) { r.checked = true; r.dispatchEvent(new Event("change", { bubbles: true })); return true; } } } return false; } function syncToGravityForms(key) { const choiceText = gfChoiceTextByKey[key]; if (!choiceText) return; // Retry pour les cas où le formulaire charge après (AJAX / cache) let tries = 0; const maxTries = 10; const interval = setInterval(() => { tries++; const ok = setGfSchoolChoice(choiceText); if (ok || tries >= maxTries) clearInterval(interval); }, 300); } select.addEventListener("change", (e) => { const key = e.target.value; render(key); syncToGravityForms(key); }); })();

Follow us: