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

Beitrag lesen

Hi,

Innerhalb eines Formulars hab ich ein div, das als "Popup" (absolut positioniert) erscheint.
In diesem div sind jede Menge Controls.
Unter anderem auch ein Button mit Beschriftung "OK", der dafür sorgt, daß Werte aus dem "Popup" in eine der Controls der form überträgt.

Wie bei einem normalen Windows-Dialog hätte ich jetzt gerne, daß die Betätigung der Return-Taste den OK-Button auslöst.

Normalerweise wäre das per form und submit-Button zu regeln - aber da sich das "Popup" bereits innerhalb eines Formulars befindet, kommt das nicht in Frage.

Also hangestrickt.
An sich auch kein Problem, ich hab dem div einen onkeydown-Handler verpaßt, der auf die Returntaste prüft und dann dieselbe Funktion aufruft, die auch bei onclick auf dem OK-Button aufgerufen wird. Soweit funktioniert das ganze wunderbar.

Aber: in meinem "Popup" gibt es auch select-Elemente.
Auch noch kein Problem - wenn das select-Element nicht ausgeklappt ist, soll die Return-Taste auch den OK-Button auslösen. Aber wenn das select-Element ausgeklappt ist (also die Liste der Optionen sichtbar ist), sollte wie üblich die Returntaste zum Zuklappen führen.

Ich bräuchte also zweierlei:
1. irgendwie verhindern, daß das event vom select bis zum div aufsteigt - ok, per stopPropagation bzw. cancelBubble kein Problem.
2. müßte ich im onkeydown-Eventhandler der select-Elemente erkennen können, ob die Optionsliste geöffnet ist und nur bei nicht-ausgeklappter Optionsliste die events doch aufsteigen zu lassen.

Es bringt auch nichts, statt dem "Popup"-div das onkeydown zuzuweisen, allen controls im "Popup" das event zuzuweisen, denn das Problem bleibt - zu erkennen, ob im select die optionliste aufgeklappt ist oder nicht.

Ist diese Erkennung möglich? Wenn ja, wie?

TIA

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.