Avatar billede andersthingholm Nybegynder
27. maj 2004 - 12:52 Der er 17 kommentarer og
1 løsning

Sæt cookie med checkbox

Hej,

Hvordan laver jeg en checkbox som sætter en cookie i det man krydser den af og fjerner den igen ved afkrydsning?

Derudover skal der køres en funktion i body onLoad, hvis cookie'en er sat.

Jeg håber at nogen kan hjælpe.

VH

Anders Thingholm
Avatar billede roenving Novice
27. maj 2004 - 16:08 #1
<script language="javascript" type="text/javascript">
function skrivCookie(name,value,expTime,path){//Tid i dage
  switch(skrivCookie.arguments.length){
    case 1:
      var expTime = 0;
      var path = "/";
    case 2:
      var expTime = 0;
      var path = "/";
    case 3:
      var path = "/";
  }
  var exp = new Date().getTime()+expTime*24*60*60*1000;
  exp = new Date(exp).toGMTString();
  var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
  document.cookie = cook;
}
function hentCookie(name){
  if (document.cookie){
    var n = document.cookie.indexOf(name+"=");
    if (n>-1){
      var val = document.cookie.substring(n+name.length+1);
      n = val.indexOf(";");
      if(n>-1)val=val.substring(0,n);
      return unescape(val);
    }
  }else return null;
}

function goerNoget(){
  var cook = hentCookie('tjekket');
  if(cook == 'true'){
    //her gør du noget onload !-)
  }
}
</script>

...

<body onload="goerNoget()">

...

<input type="checkbox" onclick="skrivCookie('tjekket',this.checked,(this.checked)?1:-30);">
Avatar billede roenving Novice
27. maj 2004 - 16:09 #2
-- og cookien er kun sat til at holde een dag, det skal du ændre ved at sætte andet end 1-tallet ind i nederste linje !-)
Avatar billede roenving Novice
27. maj 2004 - 16:10 #3
Hov, der manglede da lige et check:

function goerNoget(){
  var cook = hentCookie('tjekket');
  if(cook && cook == 'true'){
    //her gør du noget onload !-)
  }
}
Avatar billede andersthingholm Nybegynder
01. juni 2004 - 13:12 #4
Super, næsten... Checkboksen skal gerne sættes til checked/unchecked afhængig af hvad cookieen står til. Hvis cookieen ikke er sat = brugerens første besøg, skal den være checked og dermed sætte cookieen.
Avatar billede roenving Novice
01. juni 2004 - 22:45 #5
Øh, hvad så hvis brugeren checker eller unchecker ?-)
Avatar billede andersthingholm Nybegynder
01. juni 2004 - 23:34 #6
Hvis der uncheckes fjernes cookien og hvis der checkes sættes cookien.
Avatar billede roenving Novice
01. juni 2004 - 23:39 #7
function goerNoget(){
  var cook = hentCookie('tjekket');
  if(cook && cook == 'true'){
    document.FORMNAVN.CHECKBOXNAVN.checked = true;
  }
}
Avatar billede andersthingholm Nybegynder
01. juni 2004 - 23:42 #8
Hvad så med første gang man kommer ind på siden og cookien ikke er sat - her skal den også køre...
Avatar billede andersthingholm Nybegynder
01. juni 2004 - 23:43 #9
Måske noget med at den altid sætter cookien - med 2 forskellige værdier. Hvis den ikke er sat, sættes den til true og hvis den er sat og man klikker, sættes den til false.
Avatar billede roenving Novice
01. juni 2004 - 23:47 #10
Når du kommer ind første gang er den vel ikke sat, men du vil så have sat checkboxen automatisk ?-)
Avatar billede andersthingholm Nybegynder
01. juni 2004 - 23:49 #11
jepper
Avatar billede roenving Novice
02. juni 2004 - 00:15 #12
Så bliver vi nødt til ikke at fjerne den, da det ellers bliver umuligt at fjerne den !-)

function goerNoget(){
  var cook = hentCookie('tjekket');
  if(cook){
    document.FORMNAVN.CHECKBOXNAVN.checked = (cook=='true')?true:false;
  }else{
    skrivCookie('tjekket',true,365);
  }
}
</script>

...

<body onload="goerNoget()">

...

<input type="checkbox" checked="checked" onclick="skrivCookie('tjekket',this.checked,365;">

-- og her er udløbstiden sat til 365 dage !-)
Avatar billede andersthingholm Nybegynder
02. juni 2004 - 09:27 #13
Hej igen,

Nu har jeg denne kode, men den åbner min popup uanset hvad checkboxen er sat til.

    function skrivCookie(name,value,expTime,path){
      switch(skrivCookie.arguments.length){
        case 1:
          var expTime = 0;
          var path = "/";
        case 2:
          var expTime = 0;
          var path = "/";
        case 3:
          var path = "/";
      }
      var exp = new Date().getTime()+expTime*24*60*60*1000;
      exp = new Date(exp).toGMTString();
      var cook = name + " = " + escape(value) + ";expires=" + exp + ";path=" + path;
      document.cookie = cook;
    }
    function hentCookie(name){
      if (document.cookie){
        var n = document.cookie.indexOf(name+"=");
        if (n>-1){
          var val = document.cookie.substring(n+name.length+1);
          n = val.indexOf(";");
          if(n>-1)val=val.substring(0,n);
          return unescape(val);
        }
      }else return null;
    }
   
    function goerNoget(){
        var cook = hentCookie('tjekket');
        if(cook) {
            newWindow('intro/intro.htm', 'intro', 763, 432);
            document.form1.checkboxIntro.checked = (cook=='true')?true:false;
        } else{
            skrivCookie('tjekket',true,365);
        }
    }


....

                  <form name="form1" id="form1" method="post" action="">
                  <input name="checkboxIntro" type="checkbox" id="checkboxIntro" onclick="skrivCookie('tjekket',this.checked,365);" checked="checked">Kør intro
                  </form>
Avatar billede roenving Novice
02. juni 2004 - 10:47 #14
function goerNoget(){
        var cook = hentCookie('tjekket');
        if(cook) {
            if(cook=='true')
                newWindow('intro/intro.htm', 'intro', 763, 432);
            document.form1.checkboxIntro.checked = (cook=='true')?true:false;
        } else{
            skrivCookie('tjekket',true,365);
        }
    }
Avatar billede roenving Novice
02. juni 2004 - 10:53 #15
-- men så vil den ikke køre introen den første gang ... hrm ...

function goerNoget(){
        var cook = hentCookie('tjekket');
        if(!cook){
            skrivCookie('tjekket',true,365);
        } else if(cook=='false'){
            document.form1.checkboxIntro.checked = false;
            return;
        }
        document.form1.checkboxIntro.checked = true;
        newWindow('intro/intro.htm', 'intro', 763, 432);
    }
Avatar billede andersthingholm Nybegynder
02. juni 2004 - 11:07 #16
Så tror jeg at vi er der - smider du et svar?
Avatar billede roenving Novice
02. juni 2004 - 11:30 #17
Velbekomme '-)
Avatar billede roenving Novice
02. juni 2004 - 11:55 #18
-- og tak 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