Ich stand heut vor der Aufgabe in einem Formular mit einem Klick alle Radiobuttons auf denselben Wert zu setzen.
Generell kein Problem, nur wertet PHP das Ganze aus, und da es am Schluss ein mehrdimensionales Array werden soll werden in den Namen der Formularfelder eckige Klammern verwendet. Da Javascript das als Positionsangabe in einem Array versteht, kann der Name der Radiobuttons nicht direkt eingegeben werden.
Sollte jemand mal über dasselbe Problem stolpern, hier eine Lösung:
function checkall(action){
switch (action) {
case 'ok': act = 0;
break;
case 'nok': act = 1;
break;
default: act = 2;
}
elemente = document.MEINEKLASSE.elements;
for(i=0;i < elemente.length;i++){
if(elemente[i].type == 'radio'){
ename = elemente[i].name;
document.clearform.elements[ename][act].checked = true;
}
}
return false;
}
Sicherlich nicht perfekt, aber tut bei normal dimensionierten Formularen.
Angepasst werden müssen die Einträge in der switch-Anweisung und der Name des Formulars (FORMNAME).
Die Funktion läuft über das Formular und prüft ob das aktuelle Element ein radiobutton ist. Wenn ja dann setzt es den über action übergebenen und anhand von der switch-Anweisung übergebenen Zustand.
Das Funktioniert in der Art natürlich nur wenn alle Radiobuttons im Formular zu einer Gruppe gleicher Anzahl gehören. Ansonsten könnte man noch eine css-Klasse vergeben (z.B. MEINEKLASSE) und dann in der Prüfung statt
if(elemente[i].type == 'radio'){
einfach
if(elemente[i].type == 'radio' && elemente[i].class == 'MEINEKLASSE'){
verwenden. Dann würde es auch nur auf die Elemente dieser Klasse angewendet. Wird der Klassenname beim Aufruf übergeben ists dann noch dymnamischer, aber das überlasse ich der Phantasie oder der Nachfrage per Kommentar. 