Ein checkboxen-Array ansprechen und markieren
Zimboo
- javascript
1 Cheatah
Hallo zusammen :-)
ich habe da ein Problem, über das ich schon länger brüte.
In einem formular (hier will ich Benutzergruppen ändern) sollen, wenn der Admin eine Benutzergruppe ausgewählt hat, die Rechte dieser Gruppe angezeigt werden.
Dazu habe ich ein Form gebaut, das via PHP alle Rubriken und Links aus der DB ausliest und in einer Tabelle mit Checkboxen darstellt.
Die checkboxen haben den Namen "rubriken[]" bzw. "links[]" ..
Soweit so gut.
Nun habe ich es auch geschafft ein mehrdimensionales Array für JS zu erstellen und der abgleich, welche Benutzergruppe nun gerade ausgewählt ist funzt auch...
Aber ich bekomm es einfach nicht hin, das er mir die Checkboxen artig auf "checked" setzt...
So ermittel ich, welche Usergruppe ausgewählt ist:
function CheckAuswahl()
{
var change_group;
for (i = 0; i < document.change_user_group.benutzergruppe.length; ++i)
if (document.change_user_group.benutzergruppe.options[i].selected == true)
{
change_group =
document.change_user_group.benutzergruppe.options[i].value;
//alert(change_group);
}
rechte = new Array();
...
Und hier der PHP-Code, der innerhalb der JS-Function das JS-Array erstellt (aus einem mehrdimensionalem PHP-Array)
...
foreach($gewahlte_rubrik as $item => $val)
{
echo "rechte['$item'] = new Array('$item');\n";
foreach($val as $navrubrik => $cont)
{
echo "rechte['$item']['$navrubrik'] = new Array('$navrubrik');\n";
foreach($cont as $navlink =>$value)
{
echo "rechte['$item']['$navrubrik']['$value'] = new
array('$value');\n";
}
}
}
...
Und nun die Stelle an der ich ins stolpern komme, bzw. wo ich einfach überhaupt keinen Dunst habe, wie es denn weitergeht ;-)
for (var i = 0; i < rechte.length; i++)//ermittelt die Länge des Array
{
for (var eigenschaft in rechte[i])
//holt zunächst alle Usergruppen aus dem Array
{
if(rechte[i][eigenschaft] == change_group)
//prüft ob die usergruppe im arry mit der ausgewählten übereinstimmt...
{
for(var rubrik in rechte[i])
{
// und hier wollte ich mit
document.forms['change_user_group'].elements['rubriken[]'].checked = true;
//die checkboxen markieren...
}
}
}
}//Ende function
Aber leider bekomme ich entweder gar keine Fehlermeldung (weder in der Fehlerkonsole des FF noch als alert oder im quellcode) oder aber ich bekomme immer "rubriken[] is undefined" zurück geliefert...
Aber ich bekomme es nicht hin, dass die Boxen markiert werden.
Trotz intensiver Suche im Web... Darum wollte ich Euch nun mal um Hilfe bitten.
Ich möchte mich schonmal für Eure Unterstützung bedanken!
dr leeve Jung us Kölle
Hi,
ich habe da ein Problem, über das ich schon länger brüte.
die Lösung lautet: Wenn Du JavaScript betrachtet, existiert kein PHP. Und umgekehrt. Trenne Client und Server *scharf*.
Und hier der PHP-Code, der innerhalb der JS-Function das JS-Array erstellt (aus einem mehrdimensionalem PHP-Array)
Dieser Code ist uninteressant. Nur der erzeugte JavaScript-Code kann nützlich sein.
// und hier wollte ich mit
document.forms['change_user_group'].elements['rubriken[]'].checked = true;
//die checkboxen markieren...
Statt dessen setzt Du einer Checkbox-Collection die Eigenschaft "checked", welche dort keine Rolle spielt. Collections haben keine checked-Eigenschaft.
Aber leider bekomme ich entweder gar keine Fehlermeldung
In JavaScript können Objekten beliebige Eigenschaften jederzeit hinzugefügt werden. Entsprechend gibt es keine Fehlermeldung, wenn Du dies versuchst.
oder aber ich bekomme immer "rubriken[] is undefined" zurück geliefert...
An welcher Stelle?
Aber ich bekomme es nicht hin, dass die Boxen markiert werden.
Dann solltest Du die Boxen markieren, anstatt eine Collection, in der sie enthalten sind.
Cheatah