Aerusque: Überprüfung, ob alle checkboxes an sind

Ich habe folgendes Problem:

Es gibt eine Menge "n" an checkboxes, die nicht fest definiert ist, da sie mit Daten aus einer MySql-Datenbank zusammenspielt.

Die checkboxes haben folgende Form:
<input type="checkbox" name="names[]" id='".$percent."'>

Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle checkboxes angecklickt worden sind, und abhängig davon, dann weitere Funktionen auszuführen

Vielen Dank

aerusque

  1. Ich habe folgendes Problem:

    Es gibt eine Menge "n" an checkboxes, die nicht fest definiert ist, da sie mit Daten aus einer MySql-Datenbank zusammenspielt.

    Die checkboxes haben folgende Form:
    <input type="checkbox" name="names[]" id='".$percent."'>

    Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle checkboxes angecklickt worden sind, und abhängig davon, dann weitere Funktionen auszuführen

    <?
       echo "<form action=?action=check method=post>";
       echo "<input type=checkbox name=NEWtext>";
       echo "<input type=submit value=prüfe checkbox></form>";
       echo "<br>";

    if($action == check) {
          if ($NEWtext == "on")
             $checked = 'checked';
          echo "Checkbox ist <input type=checkbox name=NEWtext $checked>";
       }
    ?>

    1. Vielen Dank für die schnelle Antwort. Ich suche aber nach einer reinen Javascriptlösung

      mfg

      Ich habe folgendes Problem:

      Es gibt eine Menge "n" an checkboxes, die nicht fest definiert ist, da sie mit Daten aus einer MySql-Datenbank zusammenspielt.

      Die checkboxes haben folgende Form:
      <input type="checkbox" name="names[]" id='".$percent."'>

      Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle checkboxes angecklickt worden sind, und abhängig davon, dann weitere Funktionen auszuführen

      <?
         echo "<form action=?action=check method=post>";
         echo "<input type=checkbox name=NEWtext>";
         echo "<input type=submit value=prüfe checkbox></form>";
         echo "<br>";

      if($action == check) {
            if ($NEWtext == "on")
               $checked = 'checked';
            echo "Checkbox ist <input type=checkbox name=NEWtext $checked>";
         }
      ?>

      1. Vielen Dank für die schnelle Antwort. Ich suche aber nach einer reinen Javascriptlösung

        mfg

        Ich habe folgendes Problem:

        Es gibt eine Menge "n" an checkboxes, die nicht fest definiert ist, da sie mit Daten aus einer MySql-Datenbank zusammenspielt.

        Die checkboxes haben folgende Form:
        <input type="checkbox" name="names[]" id='".$percent."'>

        Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle checkboxes angecklickt worden sind, und abhängig davon, dann weitere Funktionen auszuführen

        function check(checkbox)
        {
         var klick = true;
         var zutaten = "";
         for(i = 0; i < checkbox.length; i++)
         {
          if(checkbox.check1[i].checked == klick)
          {
           if(zutaten == "")
           {
            zutaten = zutaten + checkbox.check1[i].value + " & ";
           }
           else
           {
            zutaten = zutaten + checkbox.check1[i].value + " & ";
           }
          }
          if(checkbox.check1[0].checked == false && checkbox.check1[1].checked == false && checkbox.check1[2].checked == false)
          {
          alert("Soll nichts auf die Pizza?");
          return false;
          }
         }
         var endzutat = zutaten.slice(0, -2);
         alert(endzutat);
        }

        1. hmm, das scheint bei mir nicht zu funktionieren. Ich poste Mal, das was ich habe. Die Funktion check() soll nun feststellen, ob alle checkboxes an sind. Falls nicht sollte setText(0) gesetzt werden. Falls ja setText(100).

          Vielen Dank in Voraus

          <html>
          <head>
          <script type="text/javascript">

          function absZahl() {
           prozent = document.config.total.value;
           kontingent = 1000;
           preis = 4;
           discount = preis-(preis*0.1);
           menge = kontingent * (prozent/100);
           if (prozent == 100){
           preis = (menge*discount)/kontingent;}

          else if(prozent >= 80){
           preis = preis;
           }
           else if(prozent <= 80){
           preis = preis*80/prozent;
           preis = Math.round(preis) * 1;

          }
           document.config.gesamtpreis.value=preis;
           }
              function ShowTotal() {
                  document.config.total.value = '';
            elem = document.config.elements;
                  var sum = 0;
                  for (i=0;i<elem.length;i++) {
                        if (elem[i].checked)
          {
                        sum = sum + parseInt(elem[i].value);

          }
                  }
                  document.config.total.value = sum;
              }

          function setText(newtext)
          {
          document.config.total.value=newtext;
          }
          function CheckAll()
              {
              var ml = document.config;
              var len = ml.elements.length;
              for (var i = 0; i < len; i++) {
                  var e = ml.elements[i];
                  if (e.name == "sizes[]") {
                  e.checked = true;
                  document.totr=100;
                  }
               }
              }
           /*Diese Funktion überprüft, ob zumindest eines der checkboxes nicht angewählt ist und macht den settext entsprechend*/
          function check()
          {
           var checkbox = document.config.elements;
           var klick = true;
           for(i = 0; i < checkbox.length; i++)
           {
            if(checkbox.checked == klick)
            {
             setText(100);
            }
            else {setText(0);}
            }
          }
          function unCheckAll()
              {
              var ml = document.config;
              var len = ml.elements.length;
              for (var i = 0; i < len; i++) {
                  var e = ml.elements[i];
                  if (e.name == "sizes[]") {
                  e.checked = false;
                        }
              }
              }

          </script>

          </head>

          <body onLoad="javascript:ShowTotal();javascript:CheckAll();javascript:setText(100);javascript:absZahl();javascript:check()">
          <form name="config" action="">
          <input class="checkbox" type="checkbox" name="sizes[]" value="4" onclick="ShowTotal();absZahl();check();" />5
          <input class="checkbox" type="checkbox" name="sizes[]" value="5" onclick="ShowTotal();absZahl();check();" />5
          <input class="checkbox" type="checkbox" name="sizes[]" value="10" onclick="ShowTotal();absZahl();check();" />10
          <input class="checkbox" type="checkbox" name="sizes[]" value="20" onclick="ShowTotal();absZahl();check();" />20
          <input class="checkbox" type="checkbox" name="sizes[]" value="5" onclick="ShowTotal();absZahl();check();" />5
          <input class="checkbox" type="checkbox" name="sizes[]" value="10" onclick="ShowTotal();absZahl();check();" />10
          <input class="checkbox" type="checkbox" name="sizes[]" value="10" onclick="ShowTotal();absZahl();check();" />10
          <input class="checkbox" type="checkbox" name="sizes[]" value="20" onclick="ShowTotal();absZahl();check();" />20
          <input class="checkbox" type="checkbox" name="sizes[]" value="5" onclick="ShowTotal();absZahl();check();" />5
          <input class="checkbox" type="checkbox" name="sizes[]" value="10" onclick="ShowTotal();absZahl();check();" />10<br />
          Insgesamt:
          <input name="total" type="text" id="total" size="3" />
          %
          <hr />
          <a href="javascript:CheckAll();javascript:setText('100');javascript:absZahl();">Alle w&auml;hlen</a><br /> <a href="javascript:unCheckAll();javascript:setText('0');javascript:absZahl();">Alle entfernen</a><hr /> Aktueller Preis: <input name="gesamtpreis" type="text" id="gesamtpreis" size="2" />,-&euro;<hr />

          </form>

          </body>
          </html>

  2. gruss aerusque,

    Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle
    checkboxes angeklickt worden sind, um abhängig davon dann weitere
    Funktionen auszuführen.

    Deine problemstellung schreit foermlich dannach, mit dem statischen
       [[Array]]-iterator [filter] sowie dem [[Array]]-iterator [every]
       erschlagen zu werden:

    ~~~javascript var inputList = document.forms["formNameOrId"].getElementsByTagName("input");
       var isEvery = Array.filter(inputList, (function (elm/, idx, arr/) {
         return (elm.type == "checkbox");
       })).every(function (elm/, idx, arr/) {
         return elm.checked;
       });
       if (isEvery) {
         // whatsoever
       } else {
         // everything else
       }

      
       als eine einzige kompakt formulierte bedingung kaeme dass dann so daher:  
      
       ~~~javascript
    if (Array.filter(document.forms["formNameOrId"].getElementsByTagName("input"), (function (elm/*, idx, arr*/) {  
         return (elm.type == "checkbox");  
       })).every(function (elm/*, idx, arr*/) {  
         return elm.checked;  
       })) {  
         // whatsoever  
       } else {  
         // everything else  
       }
    

    zur info: array-iteratoren wurden mit JavaScript 1.6 durch mozilla.org eingefuehrt.

    mittlerweile gibt es einige gute implementierungen, die dieses schoene, schnelle
       und ausdrucksstarke programmierkonzept in allen javascriptfaehigen browsern
       ermoeglicht - ich habe mich ebenfalls an einer solchen versucht:

    jsApi.Array.mozExtensions.dev.js
       jsApi.Array.mozExtensions.js

    jsApi.Array.mozGenerics.dev.js
       jsApi.Array.mozGenerics.js

    so long - peterS. - pseliger@gmx.net

    --
    »Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
    Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
    ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]