can: Abhängige <option> Felder, aber nciht hierarchisch...

Hi Leute,

also ich habe immer noch mein Problem mit abhängigen Auswahlfeldern und hänge einfach. Ich weiß nciht wie ich das realisieren soll. Meine Versuche sind bisher gescheitert...

Ich habe also mehrere selects wie hier:

<select name='sortieren[]'>
 <option value='0-1' selected >0-1</option>
 <option value='2-3' >2-3</option>
 <option value='4-5' >4-5</option>
 <option value='6-7' >6-7</option>
</select>

<select name='sortieren[]'>
 <option value='0-1'>0-1</option>
 <option value='2-3' selected >2-3</option>
 <option value='4-5' >4-5</option>
 <option value='6-7' >6-7</option>
</select>

<...>

Nun soll aber die Auswahl in einem option feld das entsprechende select in dem der Wert eigentlich "selected" steht verändern auf den Wert mit dem es getauscht werden soll. Das Ganze soll aber mit jedem select von jedem anderen select aus gehen. Ist das überhaupt möglich? Ich habe langsam meine Zweifel, aber vielleicht sehe ich die Lösung nur nicht, wie es gehen könnte.

  1. also ich habe immer noch mein Problem mit abhängigen Auswahlfeldern und hänge einfach. Ich weiß nciht wie ich das realisieren soll. Meine Versuche sind bisher gescheitert...

    Ich sehe keinen Versuch.

    Ich habe also mehrere selects wie hier:

    <select name='sortieren[]'>
    <option value='0-1' selected >0-1</option>
    <option value='2-3' >2-3</option>
    <option value='4-5' >4-5</option>
    <option value='6-7' >6-7</option>
    </select>

    <select name='sortieren[]'>
    <option value='0-1'>0-1</option>
    <option value='2-3' selected >2-3</option>
    <option value='4-5' >4-5</option>
    <option value='6-7' >6-7</option>
    </select>

    <...>

    Nun soll aber die Auswahl in einem option feld das entsprechende select in dem der Wert eigentlich "selected" steht verändern auf den Wert mit dem es getauscht werden soll. Das Ganze soll aber mit jedem select von jedem anderen select aus gehen. Ist das überhaupt möglich?

    Ich verstehe das nicht, kannst du nicht versuchen zu erklären was du wirklich willst?

    Ansonsten könnte dir die Seite weiterhelfen, hier steht wie du Auswahlfelder manipulierst: http://de.selfhtml.org/javascript/objekte/options.htm

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Ich sehe keinen Versuch.

      Stimmt, weil ich bisher die Sachen auf http://de.selfhtml.org/javascript/objekte/options.htm versucht habe. Und mein Problem dabei ist eben, dass alle Beispiele nur hierarchisch abhängende Selects behandeln. Sprich Feld 1 ändert den Wert in Feld 2 und dieses in Feld 3...

      Aber was ist nun, wenn ich Feld 3 ändere und das Feld 1 betroffen ist? Ich komme nicht darauf wie ich die ganzen Felder untereinander ansprechen soll.

      Ich verstehe das nicht, kannst du nicht versuchen zu erklären was du wirklich willst?

      Also wenn ich als Beispiel mein Formular nehme:
      http://laserbrain.ath.cx/test/index.htm

      Und dort ein Feld ändere von 0-1 auf 6-7, dann sollte das Feld in dem 6-7 stnad zu 0-1 geändert werden. Aber es soll eben auch gehen, dass man Feld 10-11 ändert zu 4-5 und das Feld mit 4-5 auf 10-11 gestellt wird. Alle versuche die ich gemacht haben, gingen nur hierarchisch.

      1. hi,

        Also wenn ich als Beispiel mein Formular nehme:
        http://laserbrain.ath.cx/test/index.htm

        Und dort ein Feld ändere von 0-1 auf 6-7, dann sollte das Feld in dem 6-7 stnad zu 0-1 geändert werden. Aber es soll eben auch gehen, dass man Feld 10-11 ändert zu 4-5 und das Feld mit 4-5 auf 10-11 gestellt wird.

        Also willst du das Selectfeld Y ermitteln, in dem der im aktuellen Feld X gerade ausgewählte Wert _derzeit_ selektiert ist - und dann in diesem Selectfeld Y die Option selektieren, die zuvor in X selektiert _war_.

        (Zunächst mal willst du allerdings das mehrfach auftauchende
        <form id="form1" name="form1" method="post" action="">
          <label></label>
        auf eins reduzieren, weil der Code so extrem unsinnig ist.)

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo zusammen,

          Also willst du das Selectfeld Y ermitteln, in dem der im aktuellen Feld X gerade ausgewählte Wert _derzeit_ selektiert ist - und dann in diesem Selectfeld Y die Option selektieren, die zuvor in X selektiert _war_.

          Genau das ist mein Anliegen

          (Zunächst mal willst du allerdings das mehrfach auftauchende
          <form id="form1" name="form1" method="post" action="">
            <label></label>

          Der Code ist nur schnell als Beispiel gewesen... Das ändere ich noch.

          1. hi,

            Also willst du das Selectfeld Y ermitteln, in dem der im aktuellen Feld X gerade ausgewählte Wert _derzeit_ selektiert ist - und dann in diesem Selectfeld Y die Option selektieren, die zuvor in X selektiert _war_.

            Genau das ist mein Anliegen

            Gut, dann beginne es umzusetzen.
            Bei Problemen/konkreten Fragen helfen wir gerne weiter.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hi nochmal,

              Gut, dann beginne es umzusetzen.

              Dann gebt mir einen Tipp, wie ich alle Selects durchsuchen kann... Alle Beispiele zeigen immer nur hierarchisch abhängende Felder!
              So z.B. hier:

              document.forms.Formularname.elements.Elementname.options[#].Eigenschaft

              Aber ich habe mehrere selects, die aus einem PHP Array erstellt werden. D.h. die heißen z.B. inhalte[], wie kann ich nun die einzelenen selects und damit die option Felder darin errecihen?

              Bei Problemen/konkreten Fragen helfen wir gerne weiter.

              Da sind momentan sehr viele...

              1. hi,

                Dann gebt mir einen Tipp, wie ich alle Selects durchsuchen kann...

                Tipp 1:
                Überlege dir, wie sieht dieser Vorgang des "Durchsuchens" für ein bestimmtes Selectfeld aus?

                Tipp 2:
                Möchtest du eine Aktion mehrfach durchführen, bieten sich idR. Schleifen an.

                Alle Beispiele zeigen immer nur hierarchisch abhängende Felder!

                Löse dich bitte von der Vorstellung, dass es für jedes Individualproblem ein "Beispiel" geben müsse.

                Aber ich habe mehrere selects, die aus einem PHP Array erstellt werden. D.h. die heißen z.B. inhalte[], wie kann ich nun die einzelenen selects und damit die option Felder darin errecihen?

                Wenn da noch generelle Verständnisprobleme bestehen, wie der Zugriff auf Select und Options "überhaupt" geht, dann beschäftige dich mit http://de.selfhtml.org/javascript/objekte/options.htm

                Bei Problemen/konkreten Fragen helfen wir gerne weiter.
                Da sind momentan sehr viele...

                _Konkret_ war bisher noch sehr wenig - eigentlich so gut wie überhaupt nichts.
                Selbst die eigentliche Aufgabenbeschreibung in _verbaler_ Form habe ich vorgelegt, weil von dir kaum mehr kam als "ja sowie auf der Seite da und dann klicki hier und Änderung da".

                Etwas strukturierter und logischer solltest du an die Bewältigung einer solchen Aufgabe vielleicht schon mal herangehen.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Ich sehe keinen Versuch.

        Stimmt, weil ich bisher die Sachen auf http://de.selfhtml.org/javascript/objekte/options.htm versucht habe. Und mein Problem dabei ist eben, dass alle Beispiele nur hierarchisch abhängende Selects behandeln. Sprich Feld 1 ändert den Wert in Feld 2 und dieses in Feld 3...

        Wo ist auf dieser seite irgendwas hierarchisch? Hast du sie wirklich gelesen?
        dort findest du nur wie du auf Auswahlfelder zugreifst (was für dein Problem absolut ausreichend erscheint).

        Aber was ist nun, wenn ich Feld 3 ändere und das Feld 1 betroffen ist? Ich komme nicht darauf wie ich die ganzen Felder untereinander ansprechen soll.

        Das sollte auf der Seite stehen, bzw. den damit verbundenen elementen also document.forms und document.forms.elements

        Und dort ein Feld ändere von 0-1 auf 6-7, dann sollte das Feld in dem 6-7 stnad zu 0-1 geändert werden. Aber es soll eben auch gehen, dass man Feld 10-11 ändert zu 4-5 und das Feld mit 4-5 auf 10-11 gestellt wird. Alle versuche die ich gemacht haben, gingen nur hierarchisch.

        Das hast du schon erklärt, nur was soll das?
        ....
        Jetzt langsam kapier ich (weil über deinem Formular "Reihenfolge ändern" steht).

        Du musst die in Frage kommenden Auswahlfelder (kannst du denen nicht den gleichen Namen geben? Dann wäre es einfacher) mit onchange beobachten
        Bei Änderung dann den neuen Wert auslesen, alle Auswahlisten checken und diejenige, welche davon die nicht die aktuell geänderte ist und den gleichen aktuellen Wert hat, den alten Wert zuweisen.
        Wobei du darauf achten musst den vor dem ändern gewählten Wert zwischen zu speichern.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. Servus,

          Jetzt langsam kapier ich (weil über deinem Formular "Reihenfolge ändern" steht).

          Du musst die in Frage kommenden Auswahlfelder (kannst du denen nicht den gleichen Namen geben? Dann wäre es einfacher) mit onchange beobachten

          Die haben alle die gleichen Namen, weil ich ein Array habe, aus denen die Daten kommen. Die sehen alle so aus:

          <select name='sortieren[]'>        <option value='0-1' selected>0-1</option>
            <option value='2-3' >2-3</option>
            <option value='4-5' >4-5</option>
            <option value='6-7' >6-7</option>
            <option value='8-9' >8-9</option>
            <option value='10-11' >10-11</option>
          </select>

          Und Du sagst, das wäre einfacher? Wieso das? Ich hdachte das stellt ein Problem dar, wegen der Eindeutigkeit...

          Bei Änderung dann den neuen Wert auslesen, alle Auswahlisten checken und diejenige, welche davon die nicht die aktuell geänderte ist und den gleichen aktuellen Wert hat, den alten Wert zuweisen.

          So, das ist der Knackpunkt, wie kann ich alle Auswahllisten durchsuchen. Ich muss gestehen, ich bin nur PHP gewöhnt und eben in JS sehr schlecht. Hast Du einen Link wo man sich solche Operationen erlesen kann, oder sonstige Tipps für mich?

          1. hi,

            So, das ist der Knackpunkt, wie kann ich alle Auswahllisten durchsuchen.

            In dem du die Aktion eine Auswahlliste durchsuchen für jede einmal durchführst. (Ggf. mit Abbruch vor dem Ende, weil schon ein Treffer gefunden wurde.)

            Ich muss gestehen, ich bin nur PHP gewöhnt und eben in JS sehr schlecht.

            Auch von dort solltest du bspw. mit dem Konzept von Schleifen doch wohl vertraut sein.

            Hast Du einen Link wo man sich solche Operationen erlesen kann, oder sonstige Tipps für mich?

            Den Link zur Beschreibung, wie man mit Select und Options in Javascript umgeht, hast du jetzt schon mehrfach genannt gekommen. Jetzt ist RTFM-Zeit.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
          2. Du musst die in Frage kommenden Auswahlfelder (kannst du denen nicht den gleichen Namen geben? Dann wäre es einfacher) mit onchange beobachten

            Die haben alle die gleichen Namen, weil ich ein Array habe, aus denen die Daten kommen. Die sehen alle so aus:

            <select name='sortieren[]'>        <option value='0-1' selected>0-1</option>
              <option value='2-3' >2-3</option>
              <option value='4-5' >4-5</option>
              <option value='6-7' >6-7</option>
              <option value='8-9' >8-9</option>
              <option value='10-11' >10-11</option>
            </select>

            Und Du sagst, das wäre einfacher? Wieso das? Ich hdachte das stellt ein Problem dar, wegen der Eindeutigkeit...

            Nein, in JS werden Formularelemente mit dem gleichen Namen in eine Collection eingereiht, die ähnlich wie ein Array behandelt werden kann.

            Wenn du also mehrer Auswahlisten mit dem obigen Namen hast, kannst du z.b. in einem onchange Handler folgendes machen:
            Aufruf: onchange="showAll(this)"

            function showAll(el)  
            {  
                var all = el.form[el.name];  
                alert('es gibt ' + all.length + ' Listen mit dem Namen ' + el.name);  
                for(var i = 0; i < all.length; i++)  
                alert( i + '=' + all[i].options[all[i].selectedIndex].value)  
            }  
            
            

            So, das ist der Knackpunkt, wie kann ich alle Auswahllisten durchsuchen. Ich muss gestehen, ich bin nur PHP gewöhnt und eben in JS sehr schlecht. Hast Du einen Link wo man sich solche Operationen erlesen kann, oder sonstige Tipps für mich?

            Den hab ich dir aber jetzt wirklich schon mehrmals gezeigt. Du hast dir die Seite nciht angeschaut?

            Struppi.

            --
            Javascript ist toll (Perl auch!)
            1. Servus Struppi,

              Nein, in JS werden Formularelemente mit dem gleichen Namen in eine Collection eingereiht, die ähnlich wie ein Array behandelt werden kann.

              Das klingt gut. Danke für diese Info.

              Wenn du also mehrer Auswahlisten mit dem obigen Namen hast, kannst du z.b. in einem onchange Handler folgendes machen:
              Aufruf: onchange="showAll(this)"

              function showAll(el)

              {
                  var all = el.form[el.name];
                  alert('es gibt ' + all.length + ' Listen mit dem Namen ' + el.name);
                  for(var i = 0; i < all.length; i++)
                  alert( i + '=' + all[i].options[all[i].selectedIndex].value)
              }

                
              Danke für diesen Code, den werde ich jetzt mal versuchen zu verstehen. Das ist super nett von Dir.  
                
                
              
              > Den hab ich dir aber jetzt wirklich schon mehrmals gezeigt. Du hast dir die Seite nciht angeschaut?  
              
              Du meinst die options Seite von selfhtml? Dann werde ich selbige nochmal lesen, mit den Informationen von Dir und dem Code Teil wird es mir vielleicht klarer.  
                
              Danke schon mal vielmals, Can