Avatar billede MSR Juniormester
08. september 2007 - 00:59 Der er 7 kommentarer og
1 løsning

Onclick disabler andre checkboxe i formular

Jeg aner INTET til javascript men fik at vide at det var den smarteste måde at gøre følgende:
jeg har x antal checkboxe. Den første hedder "alle" hvis den vælges skal de andre ikke kunne vælges (disabled).
Det virker sgu simpelt nok men som sagt aner jeg ikke hvordan Java virker?

på forhånd tak
Avatar billede thesurfer Nybegynder
08. september 2007 - 02:45 #1
Scriptet:

<script type="text/JavaScript">
function disableall(chk)
{
    c = document.getElementsByTagName("input");
    for(i = 0, len = c.length; i < len; i++) if (c[i].type == "checkbox" && c[i].name != chk.name) c[i].disabled = chk.checked;
}
</script>

Eksempel på brug:

<form>
<input type="checkbox" name="alle" onclick="disableall(this)">
<input type="checkbox" name="a">
<input type="checkbox" name="b">
<input type="checkbox" name="c">
</form>

Ved at bruge "this", er det lige meget hvad du kalder checkboxen..
Checkboxen der indeholder onclick="disableall(this)" vil ikke blive disabled.

Når du fjerner hakket fra checkboxen, vil de andre checkboxe automatisk blive enabled, dvs aktive igen.
Avatar billede MSR Juniormester
08. september 2007 - 10:49 #2
SEEEJT man. Tak for hjælpen det virker helt kanon. som sagt regnede jeg heller ikke med at det var synderligt svært, jeg kender det bare ikke...
Avatar billede thesurfer Nybegynder
08. september 2007 - 13:07 #3
Avatar billede thesurfer Nybegynder
08. september 2007 - 13:09 #4
Egentligt er der sådan set ingen grund til at checke på navnet.. man kan bare checke på elementet..

Dvs:

<script type="text/JavaScript">
function disableall(chk)
{
    c = document.getElementsByTagName("input");
    for(i = 0, len = c.length; i < len; i++) if (c[i].type == "checkbox" && c[i] != chk) c[i].disabled = chk.checked;
}
</script>

<form>
<input type="checkbox" name="alle" onclick="disableall(this)">
<input type="checkbox" name="a">
<input type="checkbox" name="b">
<input type="checkbox" name="c">
</form>
Avatar billede MSR Juniormester
09. september 2007 - 17:23 #5
hvad mener du? jeg klikker og klikker på "accepter" og der sker dart. jeg synes altid det virker utaknemmeligt dårligt det pointsystem. jeg er ked af det men jeg aner ikke hvordan jeg skal kunne lukke spørgsmålet når jeg bare gør som der står beskrevet og det ikke virker?
Avatar billede thesurfer Nybegynder
09. september 2007 - 17:42 #6
Det er fordi du skal markere navnet i boksen til venstre først, og derefter klikke på Accepter-knappen..

Jeg mener at man i tidligere udgaver af eksperten.dk, kunne man bare klikke på Accepter, hvis der kun var 1 svar.. men det er man gået væk fra..

Så nu *skal* man vælge et navn, før man kan klikke på Accepter-knappen..

Hvis du kommer i tvivl: http://www.expfaq.dk
Avatar billede thesurfer Nybegynder
09. september 2007 - 17:44 #7
I 08/09-2007 02:45:04 var det sådan, at alle checkboxe ville blive markeret, også den man klikkede på, hvis man ikke brugte name="alle"..

Med koden i 08/09-2007 13:09:52, kan du kalde den hvad som helst.. dvs., du er ikke længere bundet til at kalde den for "alle".. Du behøver faktisk ikke noget navn..

Det eneste du behøver, er: onclick="disableall(this)"
Avatar billede MSR Juniormester
10. september 2007 - 10:09 #8
For pokker da! men tak for hjælpen. endnu engang
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB