André Mantz: Fehler bei Elementnamen mit [] ... Hilfe

Hallo zusammen,

ich habe folgendes Formular:

<form name="test" action="test.php" method="post">
 <input type="checkbox" name="item[]" value="1">
 <input type="checkbox" name="item[]" value="2">
 <input type="checkbox" name="item[]" value="3">
 ...
</form>

Die Checkboxen haben absichtlich den gleichen Namen mit eckigen Klammern, da das PHP-Script welches das Formular verarbeitet die angekreuzten Checkboxen zwingend als Array erwartet.

Wenn ich nun die Eigenschaften der Checkboxen in einer JS-Schleife abfragen/bearbeiten will, so kann ich die Anzahl der Checkboxen mit

document.forms[0].elements['item[]'].length

abfragen. Funktioniert auch, mit einer Ausnahme: ist nur eine Checkbox vorhanden so liefert der o.g. Ausdruck 'undefined' ... ARGH

Was mache ich falsch? Danke für eure Hilfe.

Gruß, André

  1. Moin!

    Wenn ich nun die Eigenschaften der Checkboxen in einer JS-Schleife abfragen/bearbeiten will, so kann ich die Anzahl der Checkboxen mit

    document.forms[0].elements['item[]'].length

    abfragen. Funktioniert auch, mit einer Ausnahme: ist nur eine Checkbox vorhanden so liefert der o.g. Ausdruck 'undefined' ... ARGH

    Wenn nur ein einziges Element gleichen Namens vorhanden ist, wird von Javascript kein Array gebildet. Folglich mußt du eine Fallunterscheidung durchführen, die prüft, ob du eine oder mehrere Elemente hast, bzw. ob ein Array vorliegt oder nicht.

    - Sven Rautenberg

    --
    "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
    1. Nochmal hallo

      Wenn nur ein einziges Element gleichen Namens vorhanden ist, wird von Javascript kein Array gebildet.

      und erstmal danke für die schnelle Antwort. Sowas in der Art hatte ich mir fast gedacht.

      Folglich mußt du eine Fallunterscheidung durchführen, die prüft, ob du eine oder mehrere Elemente hast, bzw. ob ein Array vorliegt oder nicht.

      Da allerdings stehe ich leider immer noch etwas auf dem Schlauch. Ich hab nix passendes in SELFHTML gefunden. Gibt´s in JS sowas ähnliches wie das PHP - is_array() um herauszufinden ob ein Objekt ein Array ist?

      Gruß, André

      1. Da allerdings stehe ich leider immer noch etwas auf dem Schlauch. Ich hab nix passendes in SELFHTML gefunden. Gibt´s in JS sowas ähnliches wie das PHP - is_array() um herauszufinden ob ein Objekt ein Array ist?

        Hab´s gerade selbst herausgefunden. Ich frage einfach mit

        if (document.forms[0].elements['item[]'].length)

        ab. Das ergibt ja undefined wenn nur eine Checkbox da ist und somit wird der else-Zweig dann ausgeführt.

        Gruß, André