Das Problem: abhängiges drop-downmenü ohne Neuladen erstellen?

Hallo,
Ich würde gerne ein abhängiges drop-down-menü auf meine Seite bauen. Es soll also 1 sichtbares und ein potentiell sichtbares Menü geben. Wählt man im Menü 1 einen bestimmten Punkt, soll das Menü 2 auftauchen (als zusätzliche Auswahlmöglichkeit). Wollte das Ganze erst mit php umsetzen, allerdings müsste ich dann die Seite neu laden, was ich nicht will. Hab schon rumgesucht und bin auf Lösungsvorschläge gestoßen, konnte damit aber nicht so recht was anfangen. (http://de.selfhtml.org/javascript/objekte/options.htm)

Ich sollte vielleicht noch dazusagen, dass ich kein java schreiben kann, nur ansatzweise nachvollziehen, sofern es Turbopascal, html oder php ähnlich ist. Ist das, was ich will überhaupt möglich? Ein Menü ohne Neuladen der Seite zu erstellen? Falls nicht müsste ich eben alle anderen eingegebenen Werte übergeben und die Seite neu laden, was natürlich keine sonderlich elegante Lösung wäre...

Bin für alle Tipps dankbar.

  1. Hallo,

    Ich würde gerne ein abhängiges drop-down-menü auf meine Seite bauen. Es soll also 1 sichtbares und ein potentiell sichtbares Menü geben. Wählt man im Menü 1 einen bestimmten Punkt, soll das Menü 2 auftauchen (als zusätzliche Auswahlmöglichkeit).

    ohne Neuladen bleibt Dir tatsächlich nur Javascript als Möglichkeit übrig. Falls Du aber eine andere Programmiersprache beherrschst, ist Javascript nicht schwer zu lernen.

    Gruß
    Olaf

  2. Hi!
    Warum kannst du mit den JavaScriptlösungen nichts anfangen? Kannst du kein JavaScript, oder sind die Lösungen für dein Projekt keine Lösungen? ;-)
    szia, Lukas

    1. Hi!
      Warum kannst du mit den JavaScriptlösungen nichts anfangen? Kannst du kein JavaScript, oder sind die Lösungen für dein Projekt keine Lösungen? ;-)
      szia, Lukas

      Hallo,
      Von Letzterem gehe ich zwar aus, aber, das kann sehr wohl daran liegen, dass ich kein JavaScript kann ;)
      Ich wollte die zweite Listbox erst erscheinen lassen bei entsprechender Auswahl. Also nicht nur Optionen hinzufügen, sondern die komplette Listbox. Aber nachdem ich bisher auch keine Homepage gesehen hab', bei der das so ohne Neuladen geht, denk ich wohl, dass das schwierig bis unmöglich sein wird (ohne Frames etc). Werd ich mich wohl mit dem Hinzufügen begnügen müssen und eben einen Wert "keine Optionen verfügbar" oder Ähnliches reinschreiben.
      So recht kann ich das Script trotzdem nicht nachvollziehen. Erstmal scheinen der Funktion keine Parameter übergeben zu werden. Woher weiß sie dann was sie schreiben muss?
      Bisher hat das nicht so geklappt, aber ich probier mal noch ein wenig rum. Wenn ich das richtig seh, macht die Funktion ja nur folgendes:
      Variable NeuerEintrag erstellen, indem sich das script den Wert aus der Input-box "neu" in dem Formular "Formtest" holt.
      Dann schreibt er das Ganze in die selectbox "Auswahl" im Formular "Formtest" und setzt die Inputbox wieder zurück, damit man weiter eintragen kann. Versteh ich das so richtig? Hier noch mal das Script:

      <html><head><title>Test</title>
      <script type="text/javascript">
      function Hinzufuegen () {
        NeuerEintrag = new Option(document.Testform.neu.value, document.Testform.neu.value, false, true);
        document.Testform.Auswahl.options[document.Testform.Auswahl.length] = NeuerEintrag;
        document.Testform.neu.value = "";
      }
      </script>
      </head><body>
      <form name="Testform" action="">
      <select name="Auswahl" size="8">
      <option>Ein Eintrag</option>
      </select>
      <br>
      <input type="text" name="neu">
      <input type="button" value="Hinzu" onclick="Hinzufuegen()">
      </form>
      </body></html>

      Da ich keine Input-box, sondern Auswahllisten mit variablem Namen verwende, müsste ich also der Funktion die Parameter "Wert" und "Selectbox-in-der-das-Ganze-stehen-soll" übergeben, was eigentlich kein Problem ist, und dann müssts laufen... Machts im Moment noch nicht, aber ich probier mal noch. Bei Gelegenheit werd ich auch mal javascript lernen. Scheint ja wirklich nicht allzu schwer zu sein bzw ähnelt ja doch ziemlich turbopascal etc.

      1. Hi,

        Hallo,
        Ich wollte die zweite Listbox erst erscheinen lassen bei entsprechender Auswahl. Also nicht nur Optionen hinzufügen, sondern die komplette Listbox. Aber nachdem ich bisher auch keine Homepage gesehen hab', bei der das so ohne Neuladen geht, denk ich wohl, dass das schwierig bis unmöglich sein wird (ohne Frames etc).

        So schwierig ist das nicht. Ein bischen einarbeiten musst
        Du Dich allerdings schon. Ich skizzier Dir mal grob, wie
        man's machen könnte:
        1. Bau Deine 2. Auswahlliste fest in Dein Formular ein.
        2. "Verstecke" diese default-mässig per style-Angabe.
        3. Füge ein onchange="deine_funktion(this.selectedIndex);"
           in den ersten SELECT ein
        4. Prüfe in deine_funktion, ob der übergebene Index der
           Option entspricht, die das 2. Menü aktivieren soll,
           wenn ja, blende 2. Menü per Style ein.

        LG

        1. Hallo,
          Hab mich jetzt mal in js reingelesen und es scheint wirklich recht einfach zu sein. Hab jetzt auch meine Mini-Funktion geschrieben und nach etwas rumprobieren funktioniert sie auch :)
          Was ich leider nicht gefunden hab' war eine "Versteckt"-Eigenschaft. Habs mit "form.element.hidden = true" und "form.element.visible = false" probiert, aber ohne Erfolgt. Ich kann das Ganze jetzt eben "nur" disablen. Auch nicht schlecht, aber als unsichtbares Element hätte es mir besser gefallen ;)
          Außerdem kann man momentan noch im 2. Menü etwas "unerlaubtes" auswählen, dann in Auswahlmenü 1 auf den entsprechenden Eintrag klicken, der das Menü 2 disabled und die Daten vom Menü 2 werden gesendet und verrechnet... was sie eigentlich gerade nicht sollen. Da fällt mir jetzt auch auf die Schnelle nichts ein, aber ich grübel mal noch die Nacht durch ;)
          Danke schon mal für die Hilfe!

          1. Hi!
            Du suchst nach visible: hidden und/oder display: none! Viel Erfolg :)
            szia, Lukas

            1. Hi,
              Klappt nun alles mit [...].style.visibility = "hidden" und "visible. Danke Euch allen noch mal :)
              Grüße
               Marcus

              Hi!
              Du suchst nach visible: hidden und/oder display: none! Viel Erfolg :)
              szia, Lukas