04. marts 2009 - 17:09
Der er
6 kommentarer og 1 løsning
Begrænsning ved valg af checkbox
Kære eksperter, Jeg søger et Javascript der kan gøre følgende: Jeg har følgende checkbokse: <input type="checkbox" name="test" value="Værdi a"> <input type="checkbox" name="test" value="Værdi b"> <input type="checkbox" name="test" value="Værdi c"> <input type="checkbox" name="test" value="Værdi d"> <input type="checkbox" name="test" value="Værdi e"> <input type="checkbox" name="test" value="Værdi f"> Den besøgende må kun sætte hak ved to valgmuligheder. Sættes der et tredje - fjerner den hakket ved det første valg, og sætter hakket ved det nye. Eksempel: Altså en bruger kommer ind og sætter hak først ved "Værdi D" og så "Værdi F", Så vælger han "Værdi A" og når det bliver gjort forsvinder fluehakket ved "Værdi D". osv. Kan det lade sig gøre?
Annonceindlæg fra Thinkwise
04. marts 2009 - 17:39
#1
noget i stil med <form> <input type="checkbox" name="test[]" value="Værdi a" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi b" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi c" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi d" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi e" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi f" onclick="chkMe(this)"> </form> <script type="text/javascript"> var cur = null; var prev = null; function chkMe(what) { if ( prev != null ) { prev.checked = false; } if ( what == prev ) { prev = null; } else if ( what == cur ) { cur = prev; prev.checked = true; prev = null; } else { prev = cur; cur = what; } } </script>
04. marts 2009 - 18:53
#3
Hov den laver fejl, hvis man tilføjer et hak og fjerner det igen, således at der ingen hakker er.
04. marts 2009 - 19:30
#4
Ah. Opdatering: <form> <input type="checkbox" name="test[]" value="Værdi a" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi b" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi c" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi d" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi e" onclick="chkMe(this)"> <input type="checkbox" name="test[]" value="Værdi f" onclick="chkMe(this)"> </form> <script type="text/javascript"> var cur = null; var prev = null; function chkMe(what) { if ( prev != null ) { prev.checked = false; } if ( what == prev ) { prev = null; } else if ( what == cur ) { cur = prev; if ( prev != null ) prev.checked = true; prev = null; } else { prev = cur; cur = what; } } </script>
04. marts 2009 - 19:47
#7
Endnu en løsning: <html> <body> <script> var aValues = new Array(); var aInput = document.getElementsByName('test'); function validateInputs(iIndex){ if(aInput[iIndex].checked){ aValues.splice(0,0,iIndex); if(aValues.length>2){ aInput[aValues[2]].checked = false; aValues.splice(2,1); } }else{ for(i=0,len=aValues.length;i<len;i++){ if(aValues[i]==iIndex){ aValues.splice(i,1); } } } } </script> <input type="checkbox" onclick="validateInputs(0)" name="test" value="hest"> <input type="checkbox" onclick="validateInputs(1)" name="test" value="hest"> <input type="checkbox" onclick="validateInputs(2)" name="test" value="hest"> <input type="checkbox" onclick="validateInputs(3)" name="test" value="hest"> <input type="checkbox" onclick="validateInputs(4)" name="test" value="hest"> <input type="checkbox" onclick="validateInputs(5)" name="test" value="hest"> <input type="checkbox" onclick="validateInputs(6)" name="test" value="hest"> </body> </html>