Anzahl aktiver checkboxen ermitteln/Übergabe der Daten als Array
erawan
- programmiertechnik
Mahlzeit!
Ich bitte um Hilfe bei folgendem Problem:
Ich habe bei einem Formular mehrere Checkboxen deren Werte gesammelt als Array übergeben werden
<input type='checkbox' name='sitze[]' value='$reihe_id|$sitz_id|$sitz_status' />
funktioniert (dank Recherche im hier bei Selfhtml) wunderbar
nun möchte ich aber dem Benutzer noch bevor er (oder sie) das Formular abschickt in einem Input-Feld die aktuelle Anzahl an ausgewählter Checkboxen anzeigen - auch dazu habe ich hier schon Infos gefunden folgende Variante würde funktionieren
<input type='checkbox' name='sitze' value='$reihe_id|$sitz_id|$sitz_status' onchange='xcount(this);' />
function xcount() {
var aktiv = 0;
for(var i=0; i<document.sitzeadmin.sitze.length; i++) {
if(document.sitzeadmin.sitze[i].checked==true) aktiv++;
}
document.sitzeadmin.count.value = aktiv;
}
Bei dieser Lösung funktioniert aber die Übergabe der Werte nicht als Array.
(Bzw. folgt danach bei der Auswertung in der Funktion eine Fehlermeldung)
foreach($_POST["sitze"] as $key => $sitz){
// Auswertung }
Nun ist die Frage wie ich einen Kompromiss aus beiden Ansätzen zusammenstelle - funktionierende Zählung & Ausgabe der Checkboxen & Übergabe der Werte aller aktiven Checkboxen als Array?
Versuche mal document.getElementsByName('sitze')
, um die inputs zu referenzieren.
Gruß, LX
Versuche mal
document.getElementsByName('sitze')
, um die inputs zu referenzieren.
Danke für die Antwort aber leider führt dieser Lösungsansatz genau zum selben Problem - solange der Name der Checkboxen sitze[] lautet funktioniert die Anzahlermittlung nicht und sobald ich die Checkboxen auf sitze taufe funktioniert zwar die Zählung aber die Arrayspeicherung geht verloren.
Oje anscheinend ist dieses Problem sogar für diese Community zu heavy ...
Weiß jemand vielleicht eine andere Möglichkeit die Checkboxen zu zählen die in Kombination mit oben gepostetem Code funktioniert?
Mahlzeit!
Ich bitte um Hilfe bei folgendem Problem:
Ich habe bei einem Formular mehrere Checkboxen deren Werte gesammelt als Array übergeben werden
<input type='checkbox' name='sitze[]' value='$reihe_id|$sitz_id|$sitz_status' />
Das ist eine Eigenart von PHP, es wird kein Array übergeben, sondern einfach der Name 'sitze[]'.
<input type='checkbox' name='sitze' value='$reihe_id|$sitz_id|$sitz_status' onchange='xcount(this);' />
function xcount() {
Warum verwendest du hier den Parameter nicht?
function xcount(el) {
var sitze = el.form['sitze[]'];
var aktiv = 0;
for(var i = 0; i < sitze.length; i++) {
if(sitze[i].checked==true) aktiv++;
}
el.form.count.value = aktiv;
}
Struppi.
Warum verwendest du hier den Parameter nicht?
function xcount(el) {
var sitze = el.form['sitze[]'];
var aktiv = 0;
for(var i = 0; i < sitze.length; i++) {
if(sitze[i].checked==true) aktiv++;
}
el.form.count.value = aktiv;
}
Hallo Struppi!
Hey vielen Dank so funktionierts (soweit ich es bis jetzt ausgetestet habe).
nur versteh ich die Ansprechweise der Felder nicht ganz - was heißt hier Parameter verwenden? Mit dem DOM kenn ich mich zwar etwas aus aber eine derartige Bezeichnung ist mir bis dato noch nicht untergekommen.
Eine Erklärung bzw Link zu einer solchen wär noch nett. Danke!
MfG erawan
nur versteh ich die Ansprechweise der Felder nicht ganz - was heißt hier Parameter verwenden? Mit dem DOM kenn ich mich zwar etwas aus aber eine derartige Bezeichnung ist mir bis dato noch nicht untergekommen.
Parameter? ein Parameter ist ein Übergabewert einer Funktion.
In deinem Code steht:
<input type='checkbox' name='sitze' value='$reihe_id|$sitz_id|$sitz_status' onchange='xcount(this);' />
this ist hier ein Parameter für die Funktion.
Struppi.
<input type='checkbox' name='sitze' value='$reihe_id|$sitz_id|$sitz_status' onchange='xcount(this);' />
this ist hier ein Parameter für die Funktion.
ok "this" war mir schon klar. Was ich nicht gekannt habe ist die Objektansprache in der Funktion
el.form['sitze[]'] bzw. el.form.count.value
<input type='checkbox' name='sitze' value='$reihe_id|$sitz_id|$sitz_status' onchange='xcount(this);' />
this ist hier ein Parameter für die Funktion.
ok "this" war mir schon klar. Was ich nicht gekannt habe ist die Objektansprache in der Funktion
el.form['sitze[]'] bzw. el.form.count.value
Ach so, das hat nichts mit DOM zu tun. Das ist einfach der Indexoperator, mit dem du in JS auch Objekteigenschaften ansprechen kannst. Das wird auch mehrfach in selfhtml gezeigt, z.b. bei der verwendung von http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines@title=Formularelementen also im Prinzip dort wo du als erstes nachschauen hättest können.
Struppi.