Dropdown Menü springt andauernd auf die erste Auswahl zurück - wie kann ich das verhindern?

2 Antworten

Hallo, für was verwendest du dein sogenanntest Dropdown-Menü? Wenn es sich nicht um ein Menü handeln sollte, dann würde ich zu select-Listen raten: http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select

Nun zu deinem Problem, es ist ganz logisch, dass es immer auf die erste Auswahl zurückspringt, da bei jedem Laden der Seite der Code neu ausgeführt wird und du dein Abspeichern des Menüpunkt ja nirgendwo machst. CSS wird nur für das Styling verwendet, nicht für das Speichern von Menüpunkten.

Nun hast du folgende Möglichkeiten, wie du das ganze speichern kannst, für die nächsten Sitzungen eines Benutzers:

- PHP: du speicherst das Ganze in eine Datenbank und holst dir dann deinen Wert heraus

-JS: du speicherst das Ganze in einem Cookie mit einer bestimmten Sitzungsdauer


LittleDustBunny 
Fragesteller
 17.08.2016, 15:42

Vielen lieben Dank für deine Antwort :)
Mir fällt gerade auf, dass ich - vielleicht? - einen entsprechenden Punkt vergessen habe. Die Software, die ich auf meinem Webspace betreibe, ist aktuell auf der Version 6.2.1 - dieses Verhalten mit dem Dropdown-Menü hatte in den Versionen vor 6.0 noch funktioniert. Erst mit dem Einzug von 6.0 und Höher hat sich dieses Verhalten eingeschlichen und der Softwareentwickler stellt sich - ich mag mal sagen - ein bisschen quer, mir da weiter zu helfen. Deswegen will ich jetzt versuchen, dass auf eigene Faust zu lösen. Zwar habe ich etwas Ahnung, aber in Sachen Javascript bin ich noch recht unerfahren, da ich bislang eher mit reinem HTML, PHP & CSS gearbeitet habe :)
Es ist schwierig zu umschreiben. Im AdminCP lassen sich zusätzliche Felder für die Profile erstellen, wo ich selbst bestimmen kann, ob es ein reines Textfeld, oder eben dieses Dropdown-Menü sein soll (Als Typ wird "Selection" beschrieben). Das ganze wird in der Datenbank hinterlegt. Bei Ansicht des Profils wird alles richtig dargestellt, nur wenn ich anschließend das Profil bearbeiten will, sind die Dropdown-Menüs zurück auf dem ersten Punkt und ich muß alles vom neuen auswählen, um damit es später bei der Profilansicht wieder stimmt. So ganz schlicht umschrieben mag ich sagen, dass die Information im Bearbeitungsbereich während der Speicherung verloren gehen. Die Frage ist jetzt nur, an welcher Stelle ich suchen muß, da die Software an sich sehr verschachtelt ist :( Evtl. doch ein Cookie-Problem?

0
perhp  17.08.2016, 16:20
@LittleDustBunny

Wenn du das Ganze mit PHP abspeicherst, dann verwendest du kein Cookie, sondern speicherst das Ganze in eine Datenbank.

Den javascript-Code, den du vorher gepostet hast, gibt für mich nicht wirklich einen Sinn, da dort nur Sachen in variablen gespeichert werden.

1. Du musst nun überprüfen, ob die Werte auch in der Datenbank korrekt hineingeschrieben werden.

2. Wenn ja, dann liegt das Problem bei der Auslesung (evtl. überprüfen, ob Fehler ausgegeben werden) und mit welchem Code das Ganze aus der Datenbank geholt wird bzw. das Result davon.

Mit dem Updaten von Sachen bzw. Versionen kann es durchaus sein, dass bestimmte Sachen davon nicht mehr kompatibel sind, wurde evtl. die PHP Version geupdated?

0

Die JavaScript-Funktion, die du da herausgekramt hast, wird nicht groß weiterhelfen. Sie ist unvollständig und außer Kontext. Vermutlich hat sie mit dem Dropdown-Element zu tun, doch um zu wissen, was sie genau tut, müsste man sich erst intensiv einarbeiten.

Andere Lösungswege sind da viel schneller. Du kannst das Dilemma server- oder clientseitig lösen. Am schnellsten und einfachsten geht vermutlich Lösungsvorschlag 3. 

1) Kombination aus Server + Client

Nach Senden des Formulars speicherst du den Wert des Dropdown-Elements und gibst ihn weiter an die Stelle, wo es selbst gerendert wird (z.B. innerhalb eines data-Attributs). Via JavaScript liest du diese Information aus und setzt den Wert dynamisch.

2) Nur Server

Nach Senden des Formulars speicherst du den Wert der Box und da, wo die Box gerendert wird, musst du dafür Sorge tragen, dass du die Box kreierst und nicht mehr das JavaScript o.ä.. Gib das select-Element selbst aus.

3) Nur Client (mit JS)

Setze einen onchange-Event-Handler auf das Dropdown-Element, bei jeder Änderung soll der neu ausgewählte Wert in einem Cookie gespeichert werden. Beim Laden der Seite selbst wird der Cookie ausgelesen und die entsprechende Option ausgewählt. Schau im Markup, ob das Dropdown-Element ein klassisches select-Feld ist oder nicht.

Folgende Links könnten dir weiterhelfen: