{
"$schema": "../../schemas/code-crispies-module-schema.json",
"id": "html-datalist",
"title": "Datalist: Autovervollständigung",
"description": "Biete Vorschläge für Texteingaben ohne JavaScript",
"mode": "html",
"difficulty": "beginner",
"lessons": [
{
"id": "datalist-basic",
"title": "Eingabe mit Vorschlägen",
"description": "Das <datalist>-Element bietet Autovervollständigungs-Vorschläge für Eingabefelder. Verbinde es mit dem list-Attribut am Input, das zur id der Datalist passt.
Benutzer können trotzdem frei tippen - Vorschläge sind nur Hilfen!",
"task": "Erstelle eine Browser-Auswahl: 1. Füge ein <label> mit 'Browser:' hinzu 2. Füge ein <input> mit list=\"browsers\" hinzu 3. Füge eine <datalist id=\"browsers\"> mit Optionen für Chrome, Firefox und Safari hinzu",
"previewHTML": "",
"previewBaseCSS": "body { font-family: system-ui; padding: 20px; } label { display: block; margin-bottom: 8px; font-weight: 500; } input { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 6px; font-size: 16px; } input:focus { outline: 2px solid #1976d2; border-color: transparent; }",
"sandboxCSS": "",
"initialCode": "",
"solution": "\n\n",
"previewContainer": "preview-area",
"validations": [
{
"type": "element_exists",
"value": "datalist",
"message": "Füge ein <datalist>-Element hinzu"
},
{
"type": "attribute_value",
"value": { "selector": "input", "attr": "list", "value": "browsers" },
"message": "Verbinde das Eingabefeld mit der Datalist über list=\"browsers\""
},
{
"type": "element_count",
"value": { "selector": "option", "min": 3 },
"message": "Füge mindestens 3 <option>-Elemente in die <datalist> ein"
},
{
"type": "element_exists",
"value": "label",
"message": "Füge ein <label> für die Eingabe hinzu"
}
]
},
{
"id": "datalist-countries",
"title": "Länderauswahl",
"description": "Datalists funktionieren super für lange Listen wie Länder. Benutzer können tippen, um Vorschläge sofort zu filtern.