[JavaScript] Checkboxen enable / disable

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] Checkboxen enable / disable

    Hallo zusammen,

    ich hätt' da gern nen Problem - mal wieder - und eigentlich auch zwei.

    Ich weiß auch gar nicht, ob ich den Thread nicht lieber in "Script Gesuche" erstellen sollte, da mein Problem bestimmt etwas komplexer ist...


    Folgendes:

    Ich habe zwei Checkboxen. Die zweite soll anfangs disabled und erst anklickbar sein, wenn die erste angeklickt wurde.

    Mein Problem ist jetzt, dass beide Checkboxen einen Array als Name/Value tragen.

    Code:
    <input type="checkbox" name="angreifen[]" value="<? echo $data['BurgID']; ?>" onClick="EnableCheckboxUnits()">
    
    <input type="checkbox" name="einheiten['.$data['BurgID'].'][]" value="'.$Id.'" disabled>
    Mein JS-Versuch:

    Code:
    function EnableCheckboxUnits() {
    
    var einheiten = document.getElementsByName("einheiten[][]");
    var einheitenlaenge = einheiten.length;
    
    for(var i=0;i<einheitenlaenge;i++) {
      einheiten[i][i].enabled == true;
     }
    
    }
    brachte nichts....

    Zudem wäre es schön, wenn nachdem man den Haken bei der ersten Checkbox wieder weg macht, die zweite Checkbox wieder disabled würde (... und alle Häkchen bei Einheiten entfernt... aber das ist unwichtig...)

    Zur besseren Anschaulichkeit habe ich mal einen Screenshot angehängt, der das ganze Problem klar machen soll. Wichtig dabei ist, dass es nicht unbedingt nur zwei Zeilen sein können, sondern auch mehr oder weniger (wird aus einer DB ausgelsen).

    Ich hoffe, dass mir jemand helfen kann bzw. es der ein oder andere als kleine Herausforderung sieht, mir nen schönen Code zu posten *fg

    Ciao
    Boron
    Angehängte Dateien
    Zuletzt geändert von Boron; 22.02.2005, 16:20.

  • #2
    .disabled = true/false

    Kommentar


    • #3
      So
      Code:
      function EnableCheckboxUnits() {
      
      var einheiten = document.getElementsByName("einheiten[][]");
      var einheitenlaenge = einheiten.length;
      
      for(var i=0;i<einheitenlaenge;i++) {
        einheiten[i][i].disabled == false;
       }
      
      }
      geht es leider auch nicht, wenn du das meintest (?).

      btw: Stimmt [FONT=courier]onClick="EnableCheckboxUnits()"[/FONT] überhaupt?
      Zuletzt geändert von Boron; 22.02.2005, 16:38.

      Kommentar


      • #4
        Original geschrieben von Boron
        Code:
        var einheiten = document.getElementsByName("einheiten[][]");
        du hast doch gar keine elemente, die den namen "einheiten[][]" tragen ...

        es sei denn, an der stelle, wo du sie mit
        name="einheiten['.$data['BurgID'].'][]"
        erzeugst, wäre $data['BurgID'] immer ein leerstring ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Nein, da hast du Recht.

          Wie bekomme ich [FONT=courier new]$data['BurgID'][/FONT] nun in [FONT=courier new]einheiten[][][/FONT] rein?

          Ich kann ja schlecht [FONT=courier new]var einheiten = document.getElementsByName("einheiten[<? echo $data['BurgID']; ?>][]");[/FONT] schreiben (oder?)

          Kommentar


          • #6
            du solltest als nächste mal versuchen PHP und JS für dich zu trennen. Wo ist dein Problem? JS oder PHP?

            Kommentar


            • #7
              Sicherlich beides.

              Aber weitergebracht hat mich das jetzt trotzdem nicht -- ich habe nicht ohne Grund am Anfang des Threads

              Ich weiß auch gar nicht, ob ich den Thread nicht lieber in "Script Gesuche" erstellen sollte
              geschrieben.

              Kommentar


              • #8
                warum guckst du nicht im Browser nach, was letztlich als Name in Frage kommt, dann kannst du deine JS-Funktion anpassen?

                Kommentar


                • #9
                  Original geschrieben von Boron
                  ich habe nicht ohne Grund am Anfang des Threads
                  Ich weiß auch gar nicht, ob ich den Thread nicht lieber in "Script Gesuche" erstellen sollte
                  geschrieben.
                  wir können dich gerne dorthin verschieben, wenn du keine lust mehr hast, mit tipps von unserer seite selber eine lösung zu erarbeiten.

                  allerdings halte ich es für sehr unwahrscheinlich, dass dir dort jemand für dein doch eher individuelles problem eine fertiglösung anbieten kann ...
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Ich möchte so gar sehr gerne Tipps von eurer Seite bekommen.

                    Aber, es tut mir leid,
                    Wo ist dein Problem? JS oder PHP?
                    hielt ich für eine rhetorische Frage und nicht für einen Tipp.

                    Ich gebe ganz offen zu, dass ich weder in PHP noch JS groß Ahnung habe, es fehlt mir ja schon an den Basics, wie man hier auch sehen kann. (Ok, und TFM zu lesen habe ich bisher nicht so ganz geschafft.) -> deshalb ja der Satz von wegen "Script Gesuch".


                    Aber um mal zurück zum Thema zu kommen:

                    warum guckst du nicht im Browser nach, was letztlich als Name in Frage kommt, dann kannst du deine JS-Funktion anpassen?
                    Joa, also im Quelltext finde ich dann halt z.B.:

                    Code:
                    <input type="checkbox" name="einheiten[28][]" value="1" disabled>
                    wie erwartet.

                    Mein Problem im Moment ist ja, wie ich die PHP-BurgID in
                    [FONT=courier new]var einheiten = document.getElementsByName("einheiten[][]");[/FONT] reinbekomme.

                    Kommentar


                    • #11
                      Original geschrieben von Boron
                      Mein Problem im Moment ist ja, wie ich die PHP-BurgID in
                      [FONT=courier new]var einheiten = document.getElementsByName("einheiten[][]");[/FONT] reinbekomme.
                      was würde es dir helfen, wenn du eine spezielle burgid da rein bekommen würdest?

                      dann könntest du mit document.getElementsByName("einheiten[28][]") auf die checkboxen zugreifen, die 28 in der ersten klammer stehen haben - und was ist mit den übrigen ...?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Stimmt, ich meinte eigentlich auch, wie ich alle BurgIDen (Plural) abfragen kann.

                        Kommentar


                        • #13
                          Original geschrieben von Boron
                          Stimmt, ich meinte eigentlich auch, wie ich alle BurgIDen (Plural) abfragen kann.
                          mit der getElementsByName()-methode - nur, wenn du sie für jede einzelne möglich burgid einmal aufrufst.
                          das klingt aber recht unperformant, klar ...


                          vielleicht bietet es sich ja eher an, die komplette elements-collection in einer schleife zu durchlaufen, und zu schauen, wo der name des jeweiligen elementes mit "einheiten[" beginnt ...?
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Ja stimmt.

                            Das hätte dann aber den Nachteil, dass alle Einheiten-Checkboxen "freigeschaltet" werden und nicht nur die, die hinter der "angreifen"-Checkbox sind (vgl. Screenshot) oder?

                            Kommentar


                            • #15
                              Ich habe mich bei selfHTML mal umgeschaut, was es noch für Möglichkeiten gibt, Formelemente anzusprechen - und bin auf [FONT=courier new]getElementByID()[/FONT] gestoßen.

                              Also habe ich folgendes versucht:

                              Code:
                              <SCRIPT language="JavaScript" type="text/javascript">
                              <!--
                              function EnableCheckboxUnits() {
                              
                              document.getElementByID("CheckboxUnits").disabled == false;
                              
                              }
                              
                              //--></SCRIPT>
                              
                              [...]
                              
                              <input type="checkbox" name="angreifen[]" value="<? echo $data['BurgID']; ?>" onClick="EnableCheckboxUnits()">
                                   
                              <?
                              foreach( $CombatUnits as $Id => $Unit )
                              {
                              echo '<input type="checkbox" id="CheckboxUnits" name="einheiten['.$data['BurgID'].'][]" value="'.$Id.'" disabled> . "\n";
                              }
                              ?>
                              Wo steckt der Fehler?
                              Zuletzt geändert von Boron; 23.02.2005, 15:03.

                              Kommentar

                              Lädt...
                              X