Werner: Abfragen ob ein Array leer ist

Hallo,

ich habe folgenden HTML Code:

<INPUT type="checkbox" "name="test[]">

Wie kann ich mit Javascript abfragen ob test[] leer ist?

Werner

  1. Hallo,

    ich habe folgenden HTML Code:

    <INPUT type="checkbox" "name="test[]">

    Wie kann ich mit Javascript abfragen ob test[] leer ist?

    test[] ist Client-seitig kein Array, sondern nur der Bezeichner fuer dieses INPUT-Feld bzw. weitere.

    In JavaScript kann man auf alle Felder mit diesem "Sammelnamen" so zugreifen (bezogen auf das erste Formular):

    document.forms[0].elements["test[]"][index ab 0].eigenschaft
    oder
    document.forms["formularname"].elements["test[]"][index ab 0].eigenschaft

    Erst im (vermutlich bei action angegebenen) PHP-Script wird das Array $test[] erhalten und mittels count($test) kann die Anzahl der Arrayelemente bestimmt werden.

    BTW: Vor name ist ein " zuviel.

    MfG, Thomas

    1. Nachtrag:

      Wenn es darum gehen sollte, heraus zu finden, wieviele Checkboxen aktiviert sind, dann probiere es so:

      <form action="">
      <input type="checkbox" name="test[]"><br>
      <input type="checkbox" name="test[]"><br>
      <input type="checkbox" name="test[]"><br>
      <input type="button" value="Test" onclick="var j=0;d=document.forms[0].elements['test[]'];for(i=0;i<d.length;i++){if(d[i].checked)j++;}alert('Aktivierte Checkboxen: '+j)">
      </form>

      MfG, Thomas

    2. Hallo Thomas,

      vielen Dank. Ich blicke aber noch nicht ganz durch. Vielleicht kannst Du dir das ja mal ansehen:

      <TR>
                  <TD class="detail">
                          <?php

      foreach ($aTest["company"] as $key => $value) {
                              if ($aTest["company"][$key]["isDefault"] == true) {
                                  $sDefault = " " . "checked";
                              }
                              else {
                                  $sDefault = "";
                              }
                              print("<INPUT type="checkbox"" . " " .
                                    "name="" . "company[]" . """ . " " .
                                    "value="" .
                                    $aTest["company"][$key]["value"] .
                                    """ . $sDefault . ">" .
                                    $aTest["company"][$key]["desc"]
                                   );
                              print("<BR>\n");
                          }

      ?>
                  </TD>
              </TR>

      $aTest ist ein Array in PHP definiert. Ich lese daraus mit foreach die Werte aus
      und gebe diese Werte in HTML Checkboxen aus. Ich möchte nun aber eine Abfrage ein-
      bauen, die kontrolliert ob der Benutzer überhaupt eine Checkbox angeklickt hat bevor
      die nächste Seite aufgerufen wird.
      d.h. wenn der Benutzer das Formular bestätigt, soll anhand eines Javascriptes ein Kontrolle erfolgen.
      Das muß ich doch mit Javascript machen, oder?

      Werner

      Hallo,

      ich habe folgenden HTML Code:

      <INPUT type="checkbox" "name="test[]">

      Wie kann ich mit Javascript abfragen ob test[] leer ist?

      test[] ist Client-seitig kein Array, sondern nur der Bezeichner fuer dieses INPUT-Feld bzw. weitere.

      In JavaScript kann man auf alle Felder mit diesem "Sammelnamen" so zugreifen (bezogen auf das erste Formular):

      document.forms[0].elements["test[]"][index ab 0].eigenschaft
      oder
      document.forms["formularname"].elements["test[]"][index ab 0].eigenschaft

      Erst im (vermutlich bei action angegebenen) PHP-Script wird das Array $test[] erhalten und mittels count($test) kann die Anzahl der Arrayelemente bestimmt werden.

      BTW: Vor name ist ein " zuviel.

      MfG, Thomas

      1. Hallo,

        » Ich möchte nun aber eine Abfrage ein-

        bauen, die kontrolliert ob der Benutzer überhaupt eine Checkbox angeklickt hat bevor
        die nächste Seite aufgerufen wird.
        d.h. wenn der Benutzer das Formular bestätigt, soll anhand eines Javascriptes ein Kontrolle erfolgen.
        Das muß ich doch mit Javascript machen, oder?

        Ja, siehe meinen Nachtrag zur ersten Antwort. Setze das im Formular onsubmit ein und gib false zurueck, wenn keine Checkbox aktiv ist, also bei j=0:

        <form action="..." onsubmit="var j=0;d=document.forms[0].elements['test[]'];for(i=0;i<d.length;i++){if(d[i].checked)j++;}if(j==0){return false;} else {return true;}">
        <input type="checkbox" name="test[]"><br>
        <input type="checkbox" name="test[]"><br>
        <input type="checkbox" name="test[]"><br>
        <input type="submit">
        </form>

        MfG, Thomas

        1. Super,

          das klappt,

          vielen Dank Thomas.

          Werner

          PS! Das ist ein prima Forum hier, man bekommt sofort Antworten zu einem Problem.

          Hallo,

          » Ich möchte nun aber eine Abfrage ein-

          bauen, die kontrolliert ob der Benutzer überhaupt eine Checkbox angeklickt hat bevor
          die nächste Seite aufgerufen wird.
          d.h. wenn der Benutzer das Formular bestätigt, soll anhand eines Javascriptes ein Kontrolle erfolgen.
          Das muß ich doch mit Javascript machen, oder?

          Ja, siehe meinen Nachtrag zur ersten Antwort. Setze das im Formular onsubmit ein und gib false zurueck, wenn keine Checkbox aktiv ist, also bei j=0:

          <form action="..." onsubmit="var j=0;d=document.forms[0].elements['test[]'];for(i=0;i<d.length;i++){if(d[i].checked)j++;}if(j==0){return false;} else {return true;}">
          <input type="checkbox" name="test[]"><br>
          <input type="checkbox" name="test[]"><br>
          <input type="checkbox" name="test[]"><br>
          <input type="submit">
          </form>

          MfG, Thomas

  2. Hallo,

    Hi Werner,

    ich habe folgenden HTML Code:

    <INPUT type="checkbox" "name="test[]">

    Wie kann ich mit Javascript abfragen ob test[] leer ist?

    if (test.length == 0) ...

    so ganz ist mir aber nicht klar, was Du mit Deiner Checkbox vorhast (unabhängig von der Anzahl der "Gänsefüßchen"). Schau´ mal in SELFHTML nach was passiert, wenn die die Checkbox nicht checked ist.

    Werner

    Gruß
    Hans-Peter