2011-12-01 9 views
12

No soy un programador. Intento utilizar un script de cookies que recuerde la última selección del menú desplegable.Fecha de caducidad de la cookie

Encontré una secuencia de comandos que funciona pero solo una cookie de sesión. ¿Cómo agrego una fecha de vencimiento a la cookie en este script?

<head> 
    <script>   
    function SETcookie() { 
     document.cookie = "Selected=" + document.getElementById('myList').selectedIndex; 
    } 

    function GETcookie() { 
     if (document.cookie) { 
     eval(document.cookie); 
     document.getElementById('myList').selectedIndex = Selected; 
     } 
    }  
    </script> 
</head> 

<body onLoad="GETcookie()"> 
    <select id="myList" onChange="SETcookie()"> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
    <option value="3">Option 3</option> 
    <option value="4">Option 4</option> 
    </select> 
</body> 

Respuesta

3

tratar

var a = new Date(); 
a = new Date(a.getTime() +1000*60*60*24*365); 
document.cookie = 'mycookie=somevalue; expires='+a.toGMTString()+';'; 

PS. El valor 1000 * 60 * 60 * 24 * 365 = 1 Año

para obtener el índice seleccionado probar este GetCookie:

function GETcookie(){  
if (document.cookie){  
var a = document.cookie; 
Selected = a.substring(a.search('Selected=')+9,a.search(';')); 
alert("Selected = " + Selected); 
document.getElementById('myList').selectedIndex=Selected; 
}} 
+0

eso no funcionó. Tal vez lo puse en un lugar equivocado. ¿Puede mostrarme cómo se supone que debe estar aquí? Http://jsfiddle.net/BrUmu/ –

+0

Simplemente configure esto en su función SETcookie. ¿Qué obtienes? – CloudyMarble

+0

Sí lo hice, las cookies dejan de funcionar por completo. Consulte la actualización aquí http://jsfiddle.net/BrUmu/1/ –

0

Usted podría intentar esto:

function SETcookie(){ 
    var validity_days = 7; 
    var expires = validity_days * 1000 * 60 * 60 * 24; 
    var expires_date = new Date(today.getTime() + (expires)); 
    document.cookie="Selected="+document.getElementById('myList').selectedIndex + ";expires=" + expires_date.toGMTString() + ";"; 
} 
+1

"hoy" no está definido y su función es solo para su propio código, ya que utiliza el objeto DOM #myList. Es un error e inútil. –

+0

Tiene razón en que "hoy" no está definido aquí, pero "myList" era la identificación del elemento de la pregunta, no es algo que simplemente inventaron. –

7

Prueba esto:

function setCookie(c_name,c_value,exdays) { 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    document.cookie=encodeURIComponent(c_name) 
    + "=" + encodeURIComponent(c_value) 
    + (!exdays ? "" : "; expires="+exdate.toUTCString()); 
    ; 
} 

c_name es el nombre de la cookie

c_value es el valor de la cookie

exdays es el número de días que desea que la cookie expire después

Fuente: http://www.w3schools.com/js/js_cookies.asp

+0

escape está en desuso. No deberías usarlo. Por cierto, siempre compruebe los ejemplos de w3schools ... –

2

Aquí está la función que es 100% de trabajo y no tiene depreciado funciones.

function setCookie(variable, value, expires_seconds) { 
    var d = new Date(); 
    d = new Date(d.getTime() + 1000 * expires_seconds); 
    document.cookie = variable + '=' + value + '; expires=' + d.toGMTString() + ';'; 
} 
2

Puede ser que esto ayudará

document.cookie = "coolName"+ "=" +"coolValue"+ ";" + "expires="+ new Date(new Date().getTime()+60*60*1000*24).toGMTString()+";path=/"; 
Cuestiones relacionadas