0Pricing
React Academy · Lektion

Tastaturnavigation in Vorschlagslisten

Die Tasten ArrowUp, ArrowDown, Enter und Escape behandeln, um Vorschläge ohne Maus zu durchlaufen und auszuwählen

Tastaturnavigation in Vorschlagslisten ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

onKeyDown am Eingabefeld behandeln

Verknüpfen Sie den Tastatur-Handler mit dem onKeyDown-Ereignis des Eingabeelements, nicht mit onKeyPress (veraltet) oder onKeyUp. keyDown wird ausgelöst, bevor das Zeichen im Eingabefeld erscheint. Dadurch können Sie ArrowDown, ArrowUp, Enter und Escape abfangen, bevor sie eine standardmäßige Browseraktion auslösen.

Verhalten der ArrowDown-Taste

Wenn der Benutzer ArrowDown drückt, erhöhen Sie selectedIndex um 1 und begrenzen ihn auf maximal suggestions.length - 1: setSelectedIndex(prev => Math.min(prev + 1, suggestions.length - 1)). Rufen Sie außerdem e.preventDefault() auf, um zu verhindern, dass der Cursor ans Ende des Eingabetexts springt. Das wäre das standardmäßige Browserverhalten für ArrowDown in Texteingabefeldern.

Verhalten der ArrowUp-Taste

Wenn der Benutzer ArrowUp drückt, verringern Sie selectedIndex um 1 und begrenzen ihn auf mindestens 0: setSelectedIndex(prev => Math.max(prev - 1, 0)). Sie können den Wert beim Überschreiten von Index 0 auch auf -1 (keine Auswahl) begrenzen. Dadurch kann der Benutzer die Auswahl aufheben und frei weiter tippen.

Verhalten der Enter-Taste

Wenn Enter gedrückt wird und selectedIndex >= 0 gilt, wählen Sie den hervorgehobenen Vorschlag aus: Setzen Sie inputValue auf suggestions[selectedIndex], schließen Sie das Dropdown und setzen Sie selectedIndex auf -1 zurück. Wenn kein Vorschlag hervorgehoben ist (selectedIndex ist -1), lassen Sie das normale Absenden des Formulars oder die Suchaktion zu.

Verhalten der Escape-Taste

Wenn Escape gedrückt wird, schließen Sie das Dropdown, indem Sie isOpen auf false setzen, und setzen Sie selectedIndex auf -1 zurück. Löschen Sie den Eingabewert nicht — der Benutzer möchte lediglich die Vorschläge schließen, ohne einen auszuwählen, und den eingegebenen Text zur weiteren Bearbeitung behalten.

Verhalten der Tab-Taste

Wenn Tab gedrückt wird, schließen Sie das Dropdown, da der Browser den Fokus ohnehin auf das nächste fokussierbare Element verschiebt. Wenn Sie isOpen bei Tab auf false setzen, bleibt das Dropdown nicht geöffnet, nachdem der Fokus das Eingabefeld verlassen hat. Sie müssen preventDefault() nicht aufrufen — lassen Sie den Browser die natürliche Tab-Reihenfolge steuern.

Visuelle Hervorhebung der ausgewählten Zeile

Der hervorgehobene Vorschlag muss sich visuell unterscheiden. Wenden Sie auf den Vorschlag bei selectedIndex einen aktiven Stil an: className={index === selectedIndex ? 'suggestion suggestion--active' : 'suggestion'}. Der aktive Zustand verwendet typischerweise eine andere Hintergrundfarbe, damit klar erkennbar ist, welches Element bei Enter ausgewählt wird.

Das ausgewählte Element in den sichtbaren Bereich scrollen

Wenn die Vorschlagsliste eine maximale Höhe hat und scrollbar ist, kann das hervorgehobene Element bei der Tastaturnavigation aus dem sichtbaren Bereich scrollen. Verwenden Sie ein Ref-Array, um die DOM-Elemente der Vorschläge zu speichern, und rufen Sie bei jeder Änderung von selectedIndex listItemRefs.current[selectedIndex]?.scrollIntoView({ block: 'nearest' }) auf. Der Block-Wert nearest minimiert den erforderlichen Scrollbetrag.

selectedIndex bei Änderungen der Vorschläge synchronisieren

Wenn sich die Eingabe ändert und eine neue gefilterte Liste angezeigt wird, setzen Sie selectedIndex im selben State-Update oder in einem useEffect, das von den Vorschlägen abhängt, auf -1 zurück. Veraltete Indizes, die auf entfernte Elemente zeigen, würden dazu führen, dass der Benutzer den falschen Vorschlag auswählt.

Vollständiger Ablauf der Tastaturnavigation

Der vollständige Ablauf: Der Benutzer tippt, um zu filtern, ArrowDown hebt das erste Element hervor, weitere ArrowDown-Tastendrücke bewegen sich durch die Liste, ArrowUp bewegt sich wieder nach oben, Enter wählt das hervorgehobene Element aus und Escape schließt die Liste ohne Auswahl. Damit sind alle standardmäßigen Interaktionsmuster abgedeckt, die Benutzer von einem Autocomplete-Feld erwarten.

Standardverhalten bei Pfeiltasten verhindern

Rufen Sie beim Behandeln von ArrowDown und ArrowUp in einem Texteingabefeld immer e.preventDefault() auf. Ohne diesen Aufruf bewegt ArrowDown den Textcursor ans Ende und ArrowUp an den Anfang. Diese Cursorbewegungen würden mit der Navigation über den Auswahlindex kollidieren und ein verwirrendes Verhalten verursachen.

Tastenzuordnung der Tastaturnavigation

Was soll geschehen, wenn der Benutzer Enter drückt und bei selectedIndex = 2 ein Vorschlag hervorgehoben ist?

Zusammenfassung der Lektion: Tastaturnavigation

Behandeln Sie onKeyDown am Eingabefeld. ArrowDown erhöht selectedIndex (begrenzt auf max), ArrowUp verringert ihn (begrenzt auf 0 oder -1), Enter wählt das hervorgehobene Element aus, Escape schließt, ohne etwas auszuwählen, und Tab schließt und lässt den Browser den Fokus verschieben. Rufen Sie bei den Pfeiltasten immer preventDefault auf und scrollen Sie das hervorgehobene Element in den sichtbaren Bereich.

Häufig gestellte Fragen

Ist die Lektion „Tastaturnavigation in Vorschlagslisten“ kostenlos?

Ja — der vollständige Text von „Tastaturnavigation in Vorschlagslisten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Tastaturnavigation in Vorschlagslisten“?

Die Tasten ArrowUp, ArrowDown, Enter und Escape behandeln, um Vorschläge ohne Maus zu durchlaufen und auszuwählen Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Tastaturnavigation in Vorschlagslisten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Kontrolliertes Input-Feld mit Vorschlagsliste
  2. Tastaturnavigation in Vorschlagslisten
  3. Asynchrone Vorschläge mit Debounce
  4. Barrierefreiheit für Autocomplete-Widgets
← Zurück zu React Academy