molily: Erkennung: select-Element option-Liste ausgeklappt/eingeklappt

Beitrag lesen

Hallo,

Aber wenn das select-Element ausgeklappt ist (also die Liste der Optionen sichtbar ist), sollte wie üblich die Returntaste zum Zuklappen führen.

Ich verstehe nicht ganz das Szenario.

Wenn ich mit der Tastatur ein select anspringe, dann kann ich im IE, Firefox und Konqueror das Feld nicht zum Aufklappen bringen (Linux jeweils). Ich kann nur mit Pfeil hoch / Pfeil runter durch die Optionen schalten, wohlgemerkt bei geschlossenem Feld.

Im Opera geht das Öffnen mit der Leertaste, im Screenreader JAWS z.B. mit der Enter-Taste, wenn ich mich recht erinnere.

Wann also kann ein Benutzer die geöffnete Box per Entertaste zuklappen? Da fällt mir nur ein Szenario ein:

Er klappt die Box durch einen Klick darauf auf. (Wenn er dann eine Option anklickt, klappt sie sofort wieder zu, also macht er das nicht, sondern:) Er wählt mit den Pfeiltasten die gewünschte Option (oder belässt es bei der Wahl) und drückt dann Enter. Damit klappt die Box zu.

Ein bisschen konstruiert, dieses Zusammenspiel von Maus und Tastatur, oder?

Aber gut, im Firefox passieren Firefox folgende Ereignisse:

1. focus
2. click
3. Mehrere keypress mit Pfeil hoch / Pfeil runter
4. Gegebenenfalls change
5. keypress mit Enter
6. Events bubblen zum div, dort überwachst du keypress

Im Firefox kannst du über click ganz einfach feststellen, ob die Box mit der Maus geöffnet oder geschlossen wurde, und ein Enter-keypress schließt die Box.

Im IE ist es etwas dumm, da löst das Öffnen per Klick zwar ein click aus, aber das Schließen nicht. Wenn die Box nur geöffnet wird, funktioniert die Geöffnet-Erkennung für Firefox, andernfalls hat sie genau falsch gepolte Resultate (beim zweiten Öffnen und Schließen stimmt der Wert dann wieder usw.).

Opera und Konqueror unter Linux:

Das Öffnen per Klick löst nur einen focus aus, das Zuklappen per Klick allerdings einen click. Erkennung des Status ist damit ausgeschlossen.

Das Zuklappen durch Enter löst (bei Änderung) nur einen change aus, keinen keypress, keyup oder keydown.

Allerdings feuert ein keypress beim Drücken von Enter im zugeklappten Zustand, in den Browsern kannst du dir also sicher sein, dass jeder Enter-keypress »sauber« ist.

Naja, ich glaube nicht, dass du da was Cross-Browser draus basteln kannst - und ich verstehe die Notwendigkeit auch nicht. Bei reiner Tastaturbedienung klappt die Box bei meinen Tests für gewöhnlich nicht auf, und Screenreader und Co. kriegt man bei sowas eh nicht berücksichtigt.

Mathias