Avatar billede wolstrup Nybegynder
09. juni 2008 - 08:12 Der er 4 kommentarer

Tjek på checkboxe

Hvis jeg har 4 checkboxe, hvordan laver jeg så en funktion som ved tryk på en knap tjekker alle boxe, hvis der ikke er tjekket nogle i forvejen.

Er en eller flere bokse tjekket af i forvejen skal der intet ske.

På forhånd tak.
Avatar billede w13 Novice
09. juni 2008 - 10:57 #1
Hvad mener du med "tjekket nogle i forvejen"? Og hvad skal der ske?

Du tjekker sådan her:

<button onclick="CheckCheckboxes()">Check Checkbokse</button>

<script type="text/javascript">
function CheckCheckboxes(){
    var a=["id1","id2","id3","id4"];
    var iCount=0;
    for(var i=0;i<a.length;i++){
        if(document.getElementById(a[i]).getAttribute("checked"))iCount++
    }
    if(iCount==0)alert("Der er ikke checket nogle checkbokse!")
}
</script>

Så skal du definere id'erne på checkboksene her:

    var a=["id1","id2","id3","id4"];
Avatar billede roenving Novice
09. juni 2008 - 13:37 #2
Er det de eneste checkboxe ?-)

Så måske:

<form action=" ... " method="post">
<button onclick="CheckCheckboxes(this.form);return false;">Check Checkbokse</button><br>
<input type="checkbox"><br>
<input type="checkbox"><br>
<input type="checkbox"><br>
<input type="checkbox"><br>

<input type="submit">
</form>

<script type="text/javascript">
function CheckCheckboxes(f){
    var chckd = false,inps = f.getElementsByTagName("input");
    for(var i=0,im=inps.length;im>i;i++){
        chckd = chckd || inps[i].type == "checkbox" && inps[i].checked;
    }
    if(!chckd)
      for(var i=0,im=inps.length;im>i;i++){
        inps[i].checked = true;
      }
}
</script>

>>w13

-- bemærk at jeg læser og sætter attributten med html3.2/4.0 trans DOM, da xhtml-DOM alligvel bør returnere den indstilling, dokumentet havde ved indlæsningen !-)
Avatar billede w13 Novice
09. juni 2008 - 13:48 #3
Nu forstår jeg, hvad spørgeren ville. =) Ja, okay, så gør min kode ikke helt det rigtige.

Hvis det ikke er alle checkbokse, det drejer sig om, kan Roenvings kode også ændres til:

<form action=" ... " method="post">
<button onclick="CheckCheckboxes(this.form);return false;">Check Checkbokse</button><br>
<input type="checkbox"><br>
<input type="checkbox"><br>
<input type="checkbox"><br>
<input type="checkbox"><br>

<input type="submit">
</form>

<script type="text/javascript">
function CheckCheckboxes(f){
    var chckd = false,inps = ["id1","id2","id3"];
    for(var i=0,im=inps.length;im>i;i++){
        chckd = chckd || inps[i].type == "checkbox" && inps[i].checked;
    }
    if(!chckd)
      for(var i=0,im=inps.length;im>i;i++){
        inps[i].checked = true;
      }
}
</script>

På den måde vil du, ligesom i mit svar, kunne vælge checkboksene ud fra id.
Avatar billede roenving Novice
09. juni 2008 - 14:08 #4
-- der var du nok noget for kortfattet, først og fremmst skal de aktuelle checkboxe have et id:

<input id="id3" type="checkbox"><br>

-- dernæst skal referencen til elementerne være i orden:

        chckd = chckd || document.getElementById(inps[i]).type == "checkbox" && document.getElementById(inps[i]).checked;

-- og

document.getElementById(inps[i]).checked = true;
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