Avatar billede weiland Nybegynder
27. marts 2006 - 11:33 Der er 4 kommentarer og
1 løsning

Kun een checkbox må være valgt

På en side har jeg et vilkårligt antal tjekbokse, alle med samme navn, men forskellig værdi.
Kan man lave den samme effekt, som hvis det var radioknapper? Altså at man kun kan vælge een boks - hvis man vælger en anden, så fjernes markingen af den første.

Kunne jo anvende radioknapper, men det er af æstetiske grunde.. og så er det til et administrationssystem, så tilgængeligheden behøver ikke være i top :-)
Avatar billede eagleeye Praktikant
27. marts 2006 - 11:44 #1
Ja og du skal ud i noget javescript. Her er et eksempel på det men jeg ved ikke om du kan bruge det, det fjerne kryds fra alle andre end den valgt checkbox:

<script>
function uncheckOther(theform, navn) {
  if (document.all || document.getElementById) {
    for (i = 0; i < theform.length; i++) {
      var tempobj = theform.elements[i];
      if (tempobj.type.toLowerCase() == "checkbox" && tempobj.checked == true && tempobj.name != navn)
        tempobj.checked = false;
    }
  }
}
</script>


<form action="" method="post">
<input type="checkbox" name="a" value="1" onclick="uncheckOther(this.form, this.name);"><br>
<input type="checkbox" name="b" value="2" onclick="uncheckOther(this.form, this.name);"><br>
<input type="checkbox" name="c" value="3" onclick="uncheckOther(this.form, this.name);"><br>
<input type="checkbox" name="d" value="4" onclick="uncheckOther(this.form, this.name);"><br>

<input type="submit" name="send" value="send">
</form>
Avatar billede weiland Nybegynder
27. marts 2006 - 12:36 #2
Imponerende, dit eksempel virker fint, men der er bare den ene ting, at checkboksene har forskellige navne (a,b,c,d).
Hmmm, jeg havde som sagt tænkt mig, at tjekbokse havde samme navn - det gør det jo noget nemmere at få fat i værdien, når formen afsendes?

Sådan er det jo osse med radioknapper. De har alle samme navn, men har forskellig værdi...
Avatar billede eagleeye Praktikant
27. marts 2006 - 12:49 #3
Ja men man kan jo i princippet også tjekke på valus og så kun ændre på dem med samme navn eks:

<script>
function uncheckOther(theform, navn, svalue) {
  if (document.all || document.getElementById) {
    for (i = 0; i < theform.length; i++) {
      var tempobj = theform.elements[i];
      if (tempobj.type.toLowerCase() == "checkbox" && tempobj.checked == true && tempobj.name == navn && tempobj.value!=svalue)
        tempobj.checked = false;
    }
  }
}
</script>


<form action="" method="post">
<input type="checkbox" name="a" value="1" onclick="uncheckOther(this.form, this.name, this.value);"><br>
<input type="checkbox" name="a" value="2" onclick="uncheckOther(this.form, this.name, this.value);"><br>
<input type="checkbox" name="a" value="3" onclick="uncheckOther(this.form, this.name, this.value);"><br>
<input type="checkbox" name="a" value="4" onclick="uncheckOther(this.form, this.name, this.value);"><br>
<input type="checkbox" name="b" value="1" onclick="uncheckOther(this.form, this.name, this.value);"><br>
<input type="checkbox" name="b" value="2" onclick="uncheckOther(this.form, this.name, this.value);"><br>
<input type="checkbox" name="b" value="4" onclick="uncheckOther(this.form, this.name, this.value);"><br>

<input type="submit" name="send" value="send">
</form>
Avatar billede weiland Nybegynder
27. marts 2006 - 12:55 #4
Cool, det virker perfekt.
Jeg kan roligt sige, at det havde jeg aldrig fundet ud af selv. Og det var intetsteds at finde på Google.

Tak. Svarer du lige?
Avatar billede eagleeye Praktikant
27. marts 2006 - 12:56 #5
Ok, ja jeg laver da gerne et svar ;)
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