Avatar billede bongii Nybegynder
17. juni 2008 - 20:37 Der er 10 kommentarer og
1 løsning

Validering af antal checkbokse

Hej.

Jeg har 10 checkbokse:

<input type="checkbox" value="Jubii" name="kendskab">Jubii<br>
<input type="checkbox" value="MSN" name="kendskab">MSN<br>
..osv.

Er det muligt at lave et js der tjekker, således der kun kan afkrydses 3 af de bokse?
Avatar billede olebole Juniormester
17. juni 2008 - 20:50 #1
<ole>

var aInp = document.getElementsByName("kendskab");
for (var x=0,i=aInp.length-1; i>=0; i--) {
    if (aInp[i].checked) x++;
    if (x>2) {
        alert("Der er mere end tre afkrydsede emner.");
        break;
    }
}

/mvh
</bole>
Avatar billede bongii Nybegynder
17. juni 2008 - 21:30 #2
Kan man ikke lave sådan at den ikke kommer med en alert, men at man bare kun kan afkrydse 3 af felterne?
Avatar billede olebole Juniormester
17. juni 2008 - 21:40 #3
Jo, men ville det mon ikke være det modsatte af brugervenlighed? Jeg ville blive rasende irriteret over, jeg ikke kan afkrydse flere - og ikke får besked om, hvorfor  =)
Avatar billede bongii Nybegynder
18. juni 2008 - 09:32 #4
hehe jo det kan du egentlig have ret i.
Avatar billede roenving Novice
18. juni 2008 - 13:15 #5
-- og den kan man jo så sætte dynamisk:

<form action=" ... " onsubmit="return valider(this)">
Dine tre mest kendte sites:<br>
  <input type="checkbox" value="Jubii" name="kendskab" onclick="return max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendskab" onclick="return max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="kendskab" onclick="return max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendskab" onclick="return max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="kendskab" onclick="return max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendskab" onclick="return max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="kendskab" onclick="return max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendskab" onclick="return max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="kendskab" onclick="return max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendskab" onclick="return max3(this);">MSN<br>
</form>

<script type="text/javascript">
function valider(f){
  //evt. validering af formularen
}
function max3(elm){
  var f = elm.form, chks = f.elements("kendskab"),num=0;
  for(i=0,im=chks.length;im>i;i++){
    num += chks[i].checked ? 1 : 0;
  }
  if(num>3){
    alert("Du skal kun angive dine 3 mest kendte, fjern evt. et andet checkmark !-)");
    elm.checked = false;
  }
}
</script>
Avatar billede bongii Nybegynder
18. juni 2008 - 14:57 #6
Klasse roenving.

Smider i begge et svar?

Har i et godt input til http://www.eksperten.dk/spm/834573 før jeg lukker den?
Avatar billede roenving Novice
18. juni 2008 - 15:25 #7
-- og det endte med, at return i onclick-tingen på checkboksene var overflødig, og lige ved efterkigget kan man jo lave den noget mere dynamisk, så du også kunne lave det på andre grupper af checkbokse med samme funktion:

<form action=" ... " onsubmit="return valider(this)">
Dine tre mest kendte sites:<br>
  <input type="checkbox" value="Jubii" name="kendte" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendte" onclick="max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="kendte" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendte" onclick="max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="kendte" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendte" onclick="max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="kendte" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendte" onclick="max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="kendte" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="kendte" onclick="max3(this);">MSN<br>
De tre dårligste sites:<br>
  <input type="checkbox" value="Jubii" name="ringe" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="ringe" onclick="max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="ringe" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="ringe" onclick="max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="ringe" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="ringe" onclick="max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="ringe" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="ringe" onclick="max3(this);">MSN<br>
  <input type="checkbox" value="Jubii" name="ringe" onclick="max3(this);">Jubii<br>
  <input type="checkbox" value="MSN" name="ringe" onclick="max3(this);">MSN<br>
</form>

<script type="text/javascript">
function valider(f){
  //evt. validering af formularen
}
function max3(elm){
  var f = elm.form, chks = f.elements(elm.name),num=0;
  for(i=0,im=chks.length;im>i;i++){
    num += chks[i].checked ? 1 : 0;
  }
  if(num>3){
    alert("Du skal kun angive de 3 mest " + elm.name + ", fjern evt. et andet checkmark !-)");
    elm.checked = false;
  }
}
</script>

-- bemærk i øvrigt, at det ikke giver mening at bruge den slags validering og ændring af attributter i xhtml, så den er med vilje lavet med html4-DOM !-)

Velbekomme '-)
Avatar billede bongii Nybegynder
18. juni 2008 - 20:02 #8
Ole smider du også et svar?
Avatar billede olebole Juniormester
18. juni 2008 - 20:53 #9
Ellers tak, men jeg synes, roenving bør have dem  ;o)
Avatar billede bongii Nybegynder
19. juni 2008 - 08:38 #10
Hvor er du rar :)
Tak for hjælpen drenge. Altid dejligt at lave et spm. og se at der er en af jer der svarer. Når i svarer begge 2, bliver det ikke meget bedre.
Avatar billede roenving Novice
19. juni 2008 - 11:44 #11
-- o jeg takker for point ;~}
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