Michael Schröpl: Sortieren abhängiger select-Felder

Beitrag lesen

Hallo Phillip,

ich habe folgendes Problem:
Ich habe eine Liste, deren Reihenfolge ich gerne vom Nutzer bestimmen lassen möchte.

Wie soll das von der Bedienung her funktionieren? Was soll der Anwender tun können, damit was passiert?

Ich wollte das so machen:
Vor jeden eine select-Box mit den Einträgen 1-x;

Welches Wort fehlt nach "jeden"? (Ich habe Probleme, mir Dein genaues Problem vorstellen zu können.)

die Voreinstellung ist die aktuelle Position.
Nun habe ich z.B. 4 Einträge mit den Positionen 1,4,3,2. Nun möchte ich, dass sich bei der Veränderung einer Box die anderen gleichzeitig verändern.

Mehrere Boxen? Meinst Du wirklich SELECT-Felder (also *ein* Dropdown-Menü etc.), oder etwa Checkboxen?

  • Im ersten Fall hättest Du nur *ein* einziges Dialog-Element (und ich könnte mir nicht vorstellen, wie der Anwender durch Bedienung desselben dessen eigenen Inhalt beschreiben soll),
  • im letzteren Falle zwei, wobei das eine Dialogelement den Zustand des anderen steuert (und das ändert Dein Problem erheblich).

Das müsste mit JavaScript ja möglich sein; ich besitze leider eine von PHP gepflegte Schwäche gegenüber JavaScript und hätte daher gerne einen Tipp, wie ich das angehen soll.

Ich hatte vor ein paar Wochen ein ähnliches Problem, das eher der zweiten Möglichkeit Deines Problems entsprach: Ich hatte ein Formular für Suchmaschine, bei welcher der Anwender über ein dropdown-Menü (<INPUT TYPE=SELECT>) spezifizieren kann, in welchem Datenuniversum gesucht werden soll; weitere Dialogelemente (u. a. auch eine weitere SELECT-Liste) waren zur Beschreibung weiterer Suchparameter erforderlich (z. B. um anzugeben, wie die Sucheingabe zu interpretieren war).
Ursprünglich hatten wir das ungefähr so gelöst, wie Antje das skizziert hat, also den onChange-Event des ersten Auswahl-Elements abgefangen und dann per JavaScript die übrigen Dialogelemente dynamisch neu mit Werten versehen.
Da diese Suchfunktion aber *sechs* verschiedene Suchmaschinen (von z. T. ganz unterschiedlichen Servern und mit sehr unterschiedlichen Optionen, vor allem mit unterschiedlich vielen Optionen) unter einer einheitlichen Oberfläche integrieren sollte, paßte das alles nur mäßig (eigentlich hätten wir dynamisch viele Dialogelemente haben wollen), und der JavaScript-Code wurde auf die Dauer kolossal unübersichtlich.

Da in unserem Produkt vorgegeben war, daß das Eingabeformular dieser Multi-Suche in einem eigenen Frame dargestellt werden sollte, fanden wir schließlich einen ganz anderen Weg, der unsere Anforderung eleganter löste: Wir teilten den Frame in ein Frameset aus zwei Frames auf, und bei jeder Änderung des ersten SELECT-Elements (in dem einen Frame) wurde per JavaScript-Code der komplette Inhalt des anderen Frames (also der "Rest" des Formulars, inklusive Submit-Button) neu geladen.
Dieses Formular mußte sich jetzt "nur noch" in seinem onSubmit-Event den Wert des ersten SELECT-Elements (welches ja in einem anderen Frame steht!) beschaffen und in ein HIDDEN-Feld kopieren, und fertig war die Laube. (Am Ende habe ich dann noch eingebaut, daß eine Eingabe per "return" im linken Frame - der ein Texteingabefeld enthält -, die ja ein onSubmit auf das dortige Rumpf-Formular bewirkt, per JavaScript-Call implizit einen onSubmit-Event im rechten Frame mit dem eigentlichen Formular auslöst, also die Suche im anderen Frame startet ...)

Viele Grüße
      Michael