# 18 - Bootstrap Formuláře a DOM Manipulace ## 🎯 Co se naučíte V této lekci se naučíte vytvářet dynamické formuláře s Bootstrapem a DOM manipulací. ## 📚 Témata lekce - **Bootstrap formuláře** - `form-control`, `form-label`, `mb-3` - **addEventListener** - moderní přístup k event handlingu - **event.preventDefault()** - zabránění default chování formuláře - **DOM manipulace** - vytváření elementů pomocí JS - **createElement()** - vytvoření nového elementu - **appendChild()** - přidání elementu do DOM - **Template literals** - backticks pro HTML šablony - **Bootstrap Cards** - kartičky pro obsah - **Real-time výpis** - návštěvní kniha ## 📂 Soubory v projektu - `index.html` - kompletní aplikace s formulářem a výpisem - `css/bootstrap.css` - Bootstrap CSS ## 💻 Ukázka z lekce ### Formulář s Bootstrap třídami: ```html
``` ### JavaScript - Template Literals (rychlejší): ```javascript form.addEventListener("submit", function(e) { e.preventDefault(); const name = document.getElementById("name").value; const message = document.getElementById("message").value; // Template literal s backticks const htmldiv = `
${name}: ${message}
`; entriesDiv.innerHTML += htmldiv; form.reset(); }); ``` ### JavaScript - createElement (strukturovanější): ```javascript form.addEventListener("submit", function(e) { e.preventDefault(); const name = document.getElementById("name").value; const message = document.getElementById("message").value; // Vytvoření elementů const div = document.createElement("div"); div.className = "alert alert-danger"; const strong = document.createElement("strong"); strong.textContent = name; const text = document.createElement("span"); text.textContent = ": " + message; // Složení dohromady div.appendChild(strong); div.appendChild(text); // Vložení do stránky entriesDiv.appendChild(div); form.reset(); }); ``` ## 🚀 Jak s lekcí pracovat 1. Otevřete `index.html` v prohlížeči 2. Vyplňte jméno a zprávu do formuláře 3. Odešlete formulář - zpráva se objeví pod formulářem 4. Přidejte další zprávy - všechny se zobrazí 5. Prozkoumejte JavaScript kód - dvě různé metody 6. Vyzkoušejte Developer Tools (F12) - sledujte DOM změny ## 💡 Tip pro studenty ### addEventListener vs onclick: ```javascript // ✅ MODERNÍ přístup (doporučený) form.addEventListener("submit", function(e) { e.preventDefault(); // ... }); // ❌ STARŠÍ přístup (méně flexibilní)
``` ### event.preventDefault(): ```javascript form.addEventListener("submit", function(e) { e.preventDefault(); // Zastaví odeslání a reload stránky // Můžeme zpracovat data vlastním způsobem }); ``` ### Template Literals (backticks): ```javascript // Starý způsob (konkatenace) const html = "
" + name + ": " + message + "
"; // ✅ Nový způsob (template literal) const html = `
${name}: ${message}
`; ``` - Používá **backticks** (AltGr + ý) - **${proměnná}** - vložení hodnoty proměnné - Podporuje **víceřádkové stringy** ### innerHTML vs appendChild: **innerHTML** - rychlé, ale přepisuje vše: ```javascript div.innerHTML = `

Nový obsah

`; div.innerHTML += `

Přidaný obsah

`; ``` **appendChild** - přidává element, lepší pro DOM manipulaci: ```javascript const p = document.createElement("p"); p.textContent = "Nový obsah"; div.appendChild(p); ``` ### Bootstrap Form Classes: ```html
``` ## 🎯 Praktické využití - **Návštěvní kniha** - uživatelé zanechávají vzkazy - **Chat aplikace** - zprávy v real-time - **Komentáře** - pod článkem - **Todo list** - přidávání úkolů - **Košík** - přidávání produktů ## 🔗 Související lekce - **Předchozí:** - 17_modal - Bootstrap modal - 08_js_form - základy formulářů v JS - **Další:** 19_todolist - Todo list aplikace - **Související:** AI/ai_03_form_validation - pokročilá validace formulářů