H0MER: Probleme mit checkboxen

Hallo Leute.

Ich habe ein unschönes Problem mit ein paar Checkboxen.

Ausgangslage:

Ich habe eine Liste mit Checkboxen, die Dynamisch generiert wird.
Die Checkboxen haben alle den namen "hardware[]", damit ich am Ende alle gecheckten Felder erhalte.
Über diesen Listen habe ich zwei Buttons.
Einen, der mir alle checkboxen markiert und einen, der die Auswahl umkehrt.
Wenn auf Submit gedrückt wird, wird anhand des übergebenene Namens "hardware[]" getestet, ob mindestens eine Checkbox gedrückt wurde.
Soweit sogut.

Jetzt das Problem:

Jetzt kommt zu der einen Liste von Checkboxen eine beliebige andere Anzahl von checkboxen hinzu, die aber Thematisch voneineander getrennt sein sollen, und dementsprechend jeweils mit den Buttons angesprochen werden sollen.(Man hat also 0-n Gruppen von Checkboxen, die jeweils zwei Buttons zum "Alles Markieren" oder "Markierung umkehren" haben.)
Das Problem habe ich so gelöst, dass ich in der Schleife, in der die Checkboxen generiert werden einfach an den Namen "hardware[]" ein [$i] angehängt habe, so dass die Checkboxen in den Bereichen jetzt "hardware[][0-n]" heißen.
Die Buttons, zum Umkehren und alles Markeiren funktionieren auch, nur die Funktion, die prüft, ob mindestens eine Checkbox gedrückt wurde greift natürlich jetzt ins leere.

Und das ist auch das Problem.
Wie kann ich jetzt den Check so erweitern, dass ich die Checkboxen unabhängig vom Namen teste?

Ich habe schon versucht, da die Checkboxen von einem "Form" tag eingeschlossen sind, sie als Elemente von Form anzusprechen, leider gelingt mir das nicht.

Hat jemand von euch noch einen Hinweis für mich?

So ... vielen Dank fürs lesen und vorallem für Lösungsvorschläge.
Sollte ich mich etwas unverständlich ausgedrückt haben, fragt einfach nach.

Mfg
H0MER

  1. hi,

    Wie kann ich jetzt den Check so erweitern, dass ich die Checkboxen unabhängig vom Namen teste?

    Es soll also nur mindestens eine Checkbox angekreuzt sein, egal zu welcher "Gruppe" sie gehört?

    Ich habe schon versucht, da die Checkboxen von einem "Form" tag eingeschlossen sind, sie als Elemente von Form anzusprechen, leider gelingt mir das nicht.

    Sollte über die Elements-Collection durchaus machbar sein, analog zu hier: https://forum.selfhtml.org/?t=126519&m=815933

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Es soll also nur mindestens eine Checkbox angekreuzt sein, egal zu welcher "Gruppe" sie gehört?

      ja .. genau

      Sollte über die Elements-Collection durchaus machbar sein, analog zu hier: https://forum.selfhtml.org/?t=126519&m=815933

      Danke .. werde mir den Link mal angucken.

      Mfg
      H0MER

      1. Ok ... ich bin jetzt schon nen bisschen weiter.
        Hier mal der Code, den ich bereits habe.
        Ich habe die Debug Informationen für mich mal drin gelassen.

        Das einzige Problem was ich habe, ist, dass in dem "Form" Container, den ich ja anspreche auch die Buttons als Element gelten.
        Die Länge des Forms also immer variabel ist.

        Gibts es eine Möglichkeit, nur die Anzahl an Checkboxen zu ermitteln?

        Hier kommt die Funktion:
        function checkboxpressed_byid(id)
        {
         var len;
         var iterator = 0;
         len = (document.forms[id].elements.length);

        for (var i = 0; i < len; i++)
         {
          alert(len);
          if (document.forms[id].elements[i].type == "checkbox")
          {
           alert("ist checkbox");
           if (document.forms[id].elements[i].checked == true)
           {
            alert("ist gecheckt");
            iterator+=1;
           }
          }
         }
          alert("len: "+len);
         alert("iterator: "+iterator);
         if (iterator<=0)
         {
          if (len > 17)
          {
           alert("Bitte treffen Sie eine Auswahl.");
          }
          document.getElementById("fehler").style.visibility = "visible";
          return false;
         }
         else
         {
          return true;
         }
        }

        Vielen Dank schon mal für die Hilfe.

        Mfg
        H0MER

        1. hi,

          Das einzige Problem was ich habe, ist, dass in dem "Form" Container, den ich ja anspreche auch die Buttons als Element gelten.

          Da du doch aber zunächst abfragst, ob das jeweilige Element vom Typ Checkbox ist - wieso stellt das dann ein Problem dar?

          Gibts es eine Möglichkeit, nur die Anzahl an Checkboxen zu ermitteln?

          In dem du wiederum erst mal alle Element durchläufst, und dabei die zählst, die vom Typ Checkbox sind. Wäre aber wohl eher doppelt gemoppelt.

          if (iterator<=0)
          {
            if (len > 17)
            {

          In iterator hast du doch jetzt die Checkboxen gezählt, die angekreuzt waren.
          Wozu fragst du jetzt auch noch ab, ob len > 17 ist - wofür interessiert dich das denn überhaupt?

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Hi!
            Vielen Dank für die Hilfe!

            Dass ich diesen Check gar nicht mehr brauche ist mir auch gerade klar geworden ;)

            Manchmal sieht man den Wald vor lauter Bäumen nicht.

            Mfg
            H0MER

            1. Sorry, dass ich hier so oft schreibe!

              Habe eben erst realisiert, dass du gefragt hattest, wozu ich die zweite if Abfrage mache. Bin halt ein bisschen durch den Wind heute ;).

              Die zweite If-Abfrage mache ich deswegen, weil ich, einen Layer habe, der normalerweise nicht sichtbar ist, aber im Fehlerfalle oben über den ganzen Checkboxen erscheint.
              Da es aber mehr Checkboxen geben kann, als die Seite lang ist, und die Submit-Buttons am ende der Liste stehen, sieht man im "Fehlerfalle" nicht, dass man einene Button drücken soll.
              Und um einen Benutzer eine dauerklick Arie auf den Submit-Button sowie Frust zu ersparen erscheint dann noch mal ein Alert Fensterchen, welches besagt, dass man doch bitte eine Auswahl treffen sollte ;)

              mfg
              H0MER