17. januar 2006 - 12:17
Der er
22 kommentarer og 2 løsninger
Alert hvis mere end to checkboxe bliver valgt
Hej eksperter. Hvordan laver man det sådan at der kommer en Alert-boks frem i det at man vælger mere end to checkboxe? Eks.: <input type="checkbox" name="mulighed1" value="ON"> Mulighed 1<br> <input type="checkbox" name="mulighed2" value="ON"> Mulighed 2<br> <input type="checkbox" name="mulighed3" value="ON"> Mulighed 3<br> <br> <input type="submit" value="Send" name="B1"> Hvis man vælger de to første skal der komme en alert-boks frem når man klikker på nr. 3. Hvordan gør man det? Gerne med kode eksempel.
Annonceindlæg fra Academic Work Denmark A/S
17. januar 2006 - 14:37
#1
F.eks. : <input type="checkbox" name="mulighed1" value="ON" onchange="if(this.form.mulighed2.checked && this.form.mulighed3.checked && this.checked) { alert('Tre ialt.'); }"> Mulighed 1<br> <input type="checkbox" name="mulighed2" value="ON" onchange="if(this.form.mulighed1.checked && this.form.mulighed3.checked && this.checked) { alert('Tre ialt.'); }"> Mulighed 2<br> <input type="checkbox" name="mulighed3" value="ON" onchange="if(this.form.mulighed1.checked && this.form.mulighed2.checked && this.checked) { alert('Tre ialt.'); }"> Mulighed 3<br> Så kommer alerten hvis mere end to muligheder er valgt. Mvh. Johan
17. januar 2006 - 18:04
#2
-- eller måske simplere: <script type="text/javascript">var numChecked=0;maxChecked=2;</script> <input type="checkbox" name="mulighed1" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 1<br> <input type="checkbox" name="mulighed2" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 2<br> <input type="checkbox" name="mulighed3" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 3<br> <br> <input type="submit" value="Send" name="B1"> -- tjah, det med det simple var der måske ikke, men den blev lidt mere dynamisk !-)
18. januar 2006 - 14:19
#3
Jeg har brugt roenving's kode, da jeg har op til 20 forskellige muligheder, så er det lidt nemmere at styre... Læg et svar og du får point.
18. januar 2006 - 14:47
#4
Det er vel en deler ... Velbekomme '-)
18. januar 2006 - 14:50
#5
Ja, hvis du synes... Johan ligger du også et svar?
18. januar 2006 - 15:58
#6
Flinke fyre :) Mvh. Johan
18. januar 2006 - 16:02
#7
-- og tak for point ;~}
18. januar 2006 - 16:03
#8
Ja, takker også :)
19. januar 2006 - 15:18
#9
Kan en af Jer hjælpe mig med denne lille fortsættelse? Der kan maks vælges to 'muligheder' og der skal vælges en 'svarmulighed'. Dvs. at der skal komme en alertboks frem hvis man ikke vælger en 'svarmulighed'. Kode: <script type="text/javascript">var numChecked=0;maxChecked=2;</script> <input type="checkbox" name="mulighed1" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 1<br> <input type="checkbox" name="mulighed2" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 2<br> <input type="checkbox" name="mulighed3" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 3<br> <input type="checkbox" name="mulighed4" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 4<br> <br> <input type="radio" value="svarmulighed1" name="spr">Svarmulighed 1<br> <input type="radio" value="svarmulighed2" name="spr">Svarmulighed 2<br> <br> <input type="submit" value="Send" name="B1">
19. januar 2006 - 15:36
#10
<form ... onsubmit="if(!this.svarmulighed1.checked&&!this.svarmulighed2.checked){alert('Du skal vælge svarmulighed');return false;}"> -- men den slags ville jeg selv lægge ud i en (validerings-)funktion !-)
20. januar 2006 - 08:09
#11
Hvorfor ville du det? Er det bedre eller hva? Kan du komme med noget kode på denne validerings-funktion?
20. januar 2006 - 15:28
#12
-- for at have en overskuelig kode, og fordi man så kan ende med at smide det ud i en selvstændig fil !-) -- hvis det kun skal være ovenstående ville jeg flytte script-tagget op i9 head-sektionen og så skrive: <script type="text/javascript"> var numChecked=0,maxChecked=2; function valider(f){ if(!this.svarmulighed1.checked&&!this.svarmulighed2.checked){ alert('Du skal vælge svarmulighed'); return false; } return true; } </script> -- og så skrive formtagget sådan: <form ... onsubmit="return valider(this);"> -- så kan du f.eks. også tilføje validering af andre felter/oplysninger !o]
23. januar 2006 - 14:27
#13
Hej Roenving. Jeg har nu sat koden ind, men det virker ikke efter hensigten. Kan du se hvad jeg gør forkert? Kode: <html> <head> <title>Test</title> <script type="text/javascript"> var numChecked=0,maxChecked=2; function valider(f){ if(!this.svarmulighed1.checked&&!this.svarmulighed2.checked){ alert('Du skal vælge svarmulighed'); return false; } return true; } </script> </head> <body> <form method="POST" action="test.htm" onsubmit="return valider(this);"> <input type="checkbox" name="mulighed1" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 1<br> <input type="checkbox" name="mulighed2" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 2<br> <input type="checkbox" name="mulighed3" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 3<br> <input type="checkbox" name="mulighed4" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 4<br> <br> <input type="radio" value="svarmulighed1" name="spr">Svarmulighed 1<br> <input type="radio" value="svarmulighed2" name="spr">Svarmulighed 2<br> <br> <input type="submit" value="Send" name="B1"> </body> </html>
23. januar 2006 - 14:35
#14
Uff, der var da også en lyn-copy/paste-fejl: if(!f.svarmulighed1.checked&&!f.svarmulighed2.checked){
23. januar 2006 - 14:41
#15
Der kommer stadig en fejl ved mig!!! <html> <head> <title>Test</title> <script type="text/javascript"> var numChecked=0,maxChecked=2; function valider(f){ if(!f.svarmulighed1.checked&&!f.svarmulighed2.checked){ alert('Du skal vælge svarmulighed'); return false; } return true; } </script> </head> <body> <form method="POST" action="test.htm" onsubmit="return valider(this);"> <input type="checkbox" name="mulighed1" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 1<br> <input type="checkbox" name="mulighed2" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 2<br> <input type="checkbox" name="mulighed3" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 3<br> <input type="checkbox" name="mulighed4" value="ON" onclick="if(numChecked==maxChecked&&this.checked){alert('Hov, kun to !-)');return false;}else{numChecked+=this.checked?1:-1}"> Mulighed 4<br> <br> <input type="radio" value="svarmulighed1" name="spr">Svarmulighed 1<br> <input type="radio" value="svarmulighed2" name="spr">Svarmulighed 2<br> <br> <input type="submit" value="Send" name="B1"> </body> </html>
23. januar 2006 - 15:08
#16
-- du har jo heller ikke afsluttet formen, indsæt </form> lige før </body>
23. januar 2006 - 15:12
#17
Der kommer stadig en fejl: Linie 8 Tegn 5 Fejl: 'svarmulighed1.checked' er ikke et objekt. Jeg har også prøvet med </form>
23. januar 2006 - 15:21
#18
Argh, jeg havde ikke set, at dine radios havde det samme navn: if(!f.spr[0].checked&&!f.spr[1].checked){
23. januar 2006 - 15:25
#19
Så virker det... Mange tak for hjælpen IGEN IGEN IGEN
23. januar 2006 - 15:51
#20
Et sidste spørgsmål (i spørgsmålet): Kan du lave det sådan at min. én mulighed SKAL vælges og der kan maks vælges 2?
23. januar 2006 - 16:03
#21
Tjah ... <script type="text/javascript"> var numChecked=0,maxChecked=2; function valider(f){ if(!f.spr[0].checked&&!f.spr[1].checked){ alert('Du skal vælge svarmulighed'); return false; } var elms = f.elements,chckd = false; for(i=0;elms.length>i;i++) chckd = chckd || (elms[i].type == "checkbox" && elms[i].name.indexOf("mulighed") == 0)?elms[i].checked:false; if(!chckd){ alert('Du skal vælge mindst 1 mulighed'); return false; } return true; } </script> -- absolut utestet !-)
23. januar 2006 - 16:09
#22
-- absolut utestet !-) HELT OK... Den skriver 'Du skal vælge mindst 1 mulighed' uanset om du har sat et flueben eller ej... Kan du fixe det?
23. januar 2006 - 16:16
#23
Hrm, den ternære operator er en sjov ting at have fat i, så sæt et par paranteser !-) chckd = chckd || ((elms[i].type == "checkbox" && elms[i].name.indexOf("mulighed") == 0)?elms[i].checked:false);
23. januar 2006 - 16:21
#24
Tak IGEN IGEN IGEN IGEN
Vi tilbyder markedets bedste kurser inden for webudvikling