Avatar billede SilenceWar Nybegynder
26. oktober 2010 - 23:19 Der er 3 kommentarer og
1 løsning

Hjælp til JavaScript - Auto Disable Checkbokse

Hej Eksperter..

Jeg ved ikke helt hvordan jeg skal forklare mit problem med ord - så derfor har jeg lavet 2 simple billeder af, hvad mit problem er..
Jeg aner ganske enkelt ikke hvordan man kan gøre det.
Jeg har brugt en kode før der gør, at når man trykker på en checkboks, bliver den anden boks enabled - men dette har jeg ingen idé til..

Jeg håber I kan hjælpe mig - billederne med forklaringer på billedet findes nedenfor:

http://btworldwars.com/Help1.jpg
og
http://btworldwars.com/Help2.jpg
OBS.. I tilfælde af, at det har betydning for koden - så skal Kejser ikke være aktiveret i billede 2.. Fejl fra min side, beklager..
Avatar billede intenz Novice
27. oktober 2010 - 00:03 #1
Der er mange måder at løse det på, nogle mere praktiske end andre. Jeg har prøvet at lave en rimelig fleksibel løsning til dig.

<script>
function disableCheckboxes() {
    // loop funktionens argumenter igennem
    for(var i=0; i<arguments.length; i++) {
        // hent næste checkbox via dens ID
        var e = document.getElementById(arguments[i]);
   
        // skal den være disabled eller enabled? Vi gør det modsatte af hvad den er nu
        disabled = (document.getElementById(arguments[i]).disabled) ? false : true;

        // ændre dens status
        document.getElementById(arguments[i]).disabled = disabled;
    }
}

</script>
<input type="checkbox" onclick="disableCheckboxes('test1', 'test2', 'test3');" id="test0" />
<input type="checkbox" onclick="disableCheckboxes('test2', 'test3');" id="test1" />
<input type="checkbox" id="test2" />
<input type="checkbox" id="test3" />


Der er nogle kommentarer i koden så du kan se hvad der sker.

I onclick attributten skal du så sætte alle ID'erne på de checkboxe du gerne vil have disabled når du klikker på checkboxen. Du kan se dem jeg har skrevet ind passer med de ID'er de forskellige checkboxe har.
Avatar billede intenz Novice
27. oktober 2010 - 00:04 #2
Hov, der var jo en grund til jeg gemte elementet i starten. Den kønnere version ser sådan ud:
<script>
function disableCheckboxes() {
    // loop alle argumenter igennem
    for(var i=0; i<arguments.length; i++) {
        // hent næste checkbox via dens ID
        var e = document.getElementById(arguments[i]);
   
        // skal den være disabled eller enabled? Vi gør det modsatte af hvad den er nu
        disabled = (e.disabled) ? false : true;

        // ændre dens status
        e.disabled = disabled;
    }
}

</script>
<input type="checkbox" onclick="disableCheckboxes('test1', 'test2', 'test3');" id="test0" />
<input type="checkbox" onclick="disableCheckboxes('test2', 'test3');" id="test1" />
<input type="checkbox" id="test2" />
<input type="checkbox" id="test3" />
Avatar billede SilenceWar Nybegynder
28. oktober 2010 - 06:20 #3
Mange tak for hjælpen :)
Avatar billede SilenceWar Nybegynder
28. oktober 2010 - 06:29 #4
Lige en mindre deltalje - jeg tænkte på.. Det så jeg lige da jeg tjekkede funktionen endnu en gang..

Mit eksempel med kejser, centurion osv. fra billederne igen...

Forestil dig, at fra starten af er "Kejser" checkboksen checked - og alle andre bokse er disabled.

Funktionen skulle sørge for, at hvis "Kejser" var blevet aktiveret skulle de nedadgående bokse disables - men hvis "Kejser" ikke var aktiveret og "Centurion" var i stedet for - så var det nedad fra centurion de skulle være deaktiveret..

Så hvis du forestiller dig, at alle bokse er disabled pga. kejser, centurion osv. er checked. Så fjerner jeg checked fra Kejser boksen - så ønsker jeg stadig, at alle undtagen centurion skal være disabled..

Så:

Klik på kejser låser centurion op (eller låser alle)
Klik på centurion låser alle op

Ved ikke om du forstår hvad jeg mener?
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