Alle Checkboxen gleichzeitig markieren.., aber wie?
Zerko
- javascript
0 Greedy_Raccoon0 Zerko
0 Eternius0 Elya3 Sven Rautenberg0
molily
Moin Moin..
Ich habe mir eine Liste bzw. Tabelle zusammengestellt in welcher der User Orte über Checkboxen auswählen kann.
Die Checkboxen werden mit PHP dynamisch erzeugt :
echo "\r\t\t\t<input type="checkbox" name="chkLocation[]" value="".$elem[getLocation_Ident()]."">";
Wie man sehen kan lautet der Name [b]chkLocation[][/b] damit ich in der Verarbeitung mit PHP die ausgewählten Orte ansprechen kann.
Nun möchte ich dem User einen Button bzw. eine Checkbox zur verfügung stellen, welche alle Orte automatisch markiert?!
Leider weiß ich nicht wie ich alle Checkboxen über JavaScript ansprechen kann.
Beim ersten Versuch habe ich mir folgendes zusammen-gebastelt :
function CheckAllLocations(){
for(i=0; i<chkLocation.length; i++)
alert(document.FORMULAR.chkLocation[i].value);
}
}
Leider funktioniert das nicht...
Kann mir jemand weiterhelfen?!
Gruß
zerko
Die Checkboxen werden mit PHP dynamisch erzeugt :
echo "\r\t\t\t<input type="checkbox" name="chkLocation[]" value="".$elem[getLocation_Ident()]."">";
Dann lass sie PHP auch alle checken!
Wenn der User den spezifischen button drückt, setzt er eine PHP Variable z.B.: $checked = true
und dann musst du folgendes in deinen input tag einbauen:
<input type="checkbox" .......
<? if($checked){ echo "checked";} ?> >
brauchst halt nen site reload....
Lg
Greedy Raccoon
Danke.
Dann lass sie PHP auch alle checken!
Lg
Greedy Raccoon
Das würde gehen, jedoch muss ich dafür beim onClick Event der Checkbox einen form.submit(); auslösen...
Die Lösung finde ich nicht so prickelnd..., denn eigentlich muss mein Beispiel auch funktionieren..
Gruß
zerko
Hallo,
dir hilft evtl. http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name
gruss
Hallo Zerko,
function CheckAllLocations(){
for(i=0; i<chkLocation.length; i++)
alert(document.FORMULAR.chkLocation[i].value);
}
}Leider funktioniert das nicht...
Fehlermeldung?
Es ist chkLocation innerhalb der Funktion überhaupt bekannt? Vielleicht geht es mit
document.forms[0].elements[name].length;
(wobei ich "name" in derFunktion übergeben habe)
Und dann hilft Dir vermutlich die Eigenschaft checked für Formularelemente.
Gruß aus Köln-Ehrenfeld,
Elya
Moin!
Leider weiß ich nicht wie ich alle Checkboxen über JavaScript ansprechen kann.
Beim ersten Versuch habe ich mir folgendes zusammen-gebastelt :function CheckAllLocations(){
for(i=0; i<chkLocation.length; i++)
alert(document.FORMULAR.chkLocation[i].value);
}
}Leider funktioniert das nicht...
Liegt aber schon mal gar nicht so weit weg vom Schuß.
In deine Master-Checkbox gehört
<input type="checkbox" name="checkmaster" onclick="checkall(this,'chkLocation[]')">
Und deine Funktion macht:
function checkall(masterbox, name)
{
f = masterbox.form; // ein Pointer zum Formular
for(i=0; i<f.elements.length;i++)
{
if (f.elements[i].name == name)
{
f.elements[i].checked = masterbox.checked;
}
}
}
Die Schleife geht alle Elemente deines Formulares durch. Stimmt der Name eines Elements überein, wird die Eigenschaft "checked" der Masterbox übertragen an das Element. So kriegst du den Zustand gewählt/nichtgewählt des Masterbox übertragen.
Das nackte "this" im Funktionsaufruf von onclick ist übrigens sehr wichtig und eine der besten, weil sehr arbeitserleichternden Funktionen in Javascript. Es liefert dir immer das Element mit, in dem der Aufruf erfolgte. In diesem Fall also das Formularelement "checkmaster". Von diesem Element aus kannst du (vgl. die Objektreferenz http://de.selfhtml.org/javascript/objekte/elements.htm#form) beispielsweise wieder zum umgebenden Formular gelangen. Das wird in der Funktion checkall ausgenutzt in der ersten Zeile. Auf diese Weise muß man nicht extra den Namen des Formulars, in dem sich die Checkboxen befinden, mit übergeben.
Einen kleinen Nachteil hat die Funktion jetzt noch: Wenn sie auf Formularelemente trifft, die keine Checkboxen sind, die aber trotzdem wie gesucht heißen, wird es einen Fehler geben, wenn man diese nicht "checked" machen kann (Textfelder beispielsweise).
Und zur Abhängigkeit von Javascript: Dein auswertendes Skript erhält zusätzlich zu allen gewählten Checkboxen natürlich auch den Zustand der Masterbox, kann also im Zweifel basierend auf dieser Box die Verarbeitung von "allem" anstoßen.
- Sven Rautenberg
Hallo,
Einen kleinen Nachteil hat die Funktion jetzt noch: Wenn sie auf Formularelemente trifft, die keine Checkboxen sind, die aber trotzdem wie gesucht heißen, wird es einen Fehler geben, wenn man diese nicht "checked" machen kann (Textfelder beispielsweise).
Dem Elementknoten wird einfach eine Boolean-Eigenschaft angehängt. Das sollte nicht notwendigerweise zu einem Fehler führen. Die meisten Browser machen das umstandslos.
Mathias