Avatar billede subscorpio Nybegynder
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?
Avatar billede coderdk Praktikant
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>
Avatar billede subscorpio Nybegynder
04. marts 2009 - 18:07 #2
Meget flot kode - Jeg takker og bukker ;-)
Avatar billede subscorpio Nybegynder
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.
Avatar billede coderdk Praktikant
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>
Avatar billede subscorpio Nybegynder
04. marts 2009 - 19:32 #5
SÅDAN ;-)

Mange tak
Avatar billede coderdk Praktikant
04. marts 2009 - 19:35 #6
np :)
Avatar billede fant0mas Nybegynder
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>
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