2012-12-18 11 views
5

Ci sono molti argomenti riguardanti questa funzione, tuttavia non riesco a farlo funzionare. Ho cercato su Google in questo caso specifico e un sacco di link mi permettono di essere qui, ma stranamente non riesco a farli funzionare. L'unica cosa che ho ottenuto è stata la seguente: http://dl.dropbox.com/u/2238080/a/!old/z.htm ma come puoi vedere, non memorizza lo stato della casella è deselezionata.(jQuery) Salva lo stato della casella di controllo al clic nel cookie

saluti, Ruben

+3

Questo link a Dropbox fornisce un 404. Qualcosa come un JSFiddle sarebbe stato utile per coloro che verranno dopo. – Ojen

risposta

12

È possibile modificare TUTTO il codice in solo: MODIFICA per rimuovere la parte non necessaria.

$(document).ready(function(){ 
    // read the current/previous setting 
    $("input.box[type=checkbox]").each(function() { 
     var name = $(this).attr('name'); 
     if ($.cookie(name) && $.cookie(name) == "true") { 
      $(this).prop('checked', $.cookie(name)); 
     } 
    }); 
    // event management 
    $("input.box[type=checkbox]").change(function() { 
     var name = $(this).attr("name"); 
     $.cookie(name, $(this).prop('checked'), { 
      path: '/', 
      expires: 365 
     }); 
    }); 
}); 

tra cui sbarazzarsi di tutto questo:

$(document).ready(function(){ 
    remember("[name=1]"); 
}); 
... 

EDIT: versione meno prolissa:

$("input.box").each(function() { 
    var mycookie = $.cookie($(this).attr('name')); 
    if (mycookie && mycookie == "true") { 
     $(this).prop('checked', mycookie); 
    } 
}); 
$("input.box").change(function() { 
    $.cookie($(this).attr("name"), $(this).prop('checked'), { 
     path: '/', 
     expires: 365 
    }); 
}); 

esempio funzionante: http://jsfiddle.net/R73vy/

+0

Ancora meglio, grazie !! – user1913435

+2

Mi sento come se fosse degno di menzione per le persone che incappano in questa ricerca di una risposta, come lo sono stato io, poiché mi ci è voluto un po 'di ricerche per rendermene conto (e potrebbe essere solo la mia stupidità, per cui mi scuso), ma avrai bisogno del plugin jquery.cookie per farlo funzionare. L'ho trovato a questo indirizzo: https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js – Skryn

+0

@Skryn Fair point, è nel violino come una risorsa esterna ma non specificatamente chiamato - e il link nella domanda non è più valido sembra. –

1

Dovrebbe funzionare con jQuery < 1.6 ma a partire dalla 1.6 si dovrebbe cambiare ogni aspetto del .attr("checked")-.prop("checked")

EDIT: cambiata la condizione if per verificare il cookie

 function remember(selector){ 
      $(selector).each(
       function(){ 
        var name = $(this).attr('name'); 
        if($.cookie(name) && $.cookie(name)=="true"){ 
         $(this).prop('checked', true); 
        } else { 
         $(this).prop('checked', false) 
        } 
        $(this).change(
         function(){ 
          $.cookie(name, $(this).prop('checked'), { path: '/', expires: 365 }); 
         } 
        ); 
       } 
      ); 
     } 
+0

Grazie mille !! – user1913435

1

Se siete solo interessati a una casella di controllo E/O non si desidera includere il plugin jQuery biscotto per questo, ecco due righe di codice:

//on page load set the checkbox to stored value or default to true 
$('#turbo').prop('checked' , (typeof sessionStorage.turbo !== 'undefined') ? (sessionStorage.turbo=='true') : true); 
//when checkbox is updated, update stored value 
$('#turbo').change(function() { sessionStorage.turbo = $(this).prop('checked'); }); 

anche questo non fa uso di c gli ookies risparmiano così un paio di byte di larghezza di banda. Passare a localStorage per estendere la durata della selezione salvata.

Problemi correlati