Martin <news@natten-i.dk> writes:
> Nej det er faktisk radioknapper.
>
> Fx sådan her
>
> Må brugeren...
> Skrive nyheder
> [X] Ja [ ] Nej
....
> Selvfølgelig har hvert par ja/nej radio'er samme name og id attribut.
Ok, det giver mening. Og du vil have sat de radioknapper med værdien
"1" til checked.
....
> Må brugeren...
> <form action=".." method="post" id="edit_rights">
> Oprette nyheder
> <input type="radio" id="radioknap_1" name="radioknap_1" value="1"> Ja
> <input type="radio" id="radioknap_1" name="radioknap_1" value="0"> Nej
Det er så ugyldigt HTML. To elementer må ikke have samme id.
Hvis det skal være fancy (og hvorfor skulle det ikke det :) så prøv:
<input type="radio" name="radioknap_1" value="1" id="radioknap_1_1">
<label for="radioknap_1_1">Ja</label>
<input type="radio" name="radioknap_1" value="0" id="radioknap_1_0">
<label for="radioknap_1_0">Nej</label>
Et input-element må gerne have både "id" og "name", og de behøver ikke
være ens. Navnet er "control name", det der submittes. Flere elementer
kan have samme navn, selv indenfor samme form. Id er et unikt id i
dokumentet.
>
> Slette nyheder
> <input type="radio" id="radioknap_2" name="radioknap_2" value="1"> Ja
> <input type="radio" id="radioknap_2" name="radioknap_2" value="0"> Nej
ditto
> ...
> </form>
>
....
> Er der ikk et eller andet med at når man bruger form.elements så skal
> formen også have en name attribut?
Nej.
Selv hvis man bruger "document.forms['minForm']", så virker det stadig
hvis "minForm" er formens id (undtagen gamle browsere fra NS4 tiden,
de forstår ikke de nymodens "id"-attributter).
>> som kaldes med:
>> <input type="button" value="alle til ja"
>> onclick='setAllChecked(this.form, ["radioknap_1",
>> "radioknap_2", "radioknap_3", "radioknap_4"], true)' >
>> Her antages det at "radioknap_1" er navnet på form-controllen (i.e.,
>> name-attributten, ikke id-attributten), og at det hele er inde i en form.
>> Det gør ting meget nemmere.
>
> Så overholder vi ikke w3c strict mere, og det vil jeg altså :)
Den er skam fint overholdt.
En form-control er fx et input-element (andre alternativer er select,
textarea, eller object). Det er ikke form-elementet jeg taler om.
En form-control må have både "name" og "id", og de behøver ikke engang
være ens.
Ok, nu tror jeg at jeg forstår opgaven. Her er så et forsøg på løsning:
<form ... >
<!-- knap skal være inde i form -->
<input type="button" value="ja til alt"
onclick="setAllChecked(this.form,
['radioknap_1','radioknap_2','radioknap_3','radioknap_4'],
'1');">
<script type="text/javascript"> // kunne stå i <head> også.
function setAllChecked(form, names, value) {
for(var i = 0; i < names.length; i++) { // for hvert navn
var elems = form.elements[names[i]]; // find controls med det navn
if (typeof elems.length == "number") { // hvis mere end en
for (var j = 0; j < elems.length; j++) { // gennemløb og
var elem = elems[j];
if (elem.value == value) { // hvis value som angivet
elem.checked = true; // sæt til valgt
}
}
} else { // hvis kun en
elems.checked = true; // vælg altid
}
}
}
</script>
Held og lykke :)
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'