2012-12-18 24 views
5

Es gibt eine Menge von Themen in Bezug auf diese Funktion, dennoch kann ich nicht scheinen es funktioniert. Ich habe über diesen speziellen Fall gegoogelt und eine Reihe von Links hat mich hierher geführt, aber ich kann sie nicht genug zur Arbeit bringen. Das einzige, was ich funktionierte, war das folgende: http://dl.dropbox.com/u/2238080/a/!old/z.htm aber wie Sie sehen können, speichert es nicht den Status der Box ist deaktiviert.(jQuery) Speichern Checkbox-Status bei Klick in Cookie

Grüße, Ruben

+3

Dieser Dropbox-Link gibt eine 404. Etwas wie eine JSFiddle wäre hilfreich für diejenigen, die später kommen. – Ojen

Antwort

12

Sie können Ihren gesamten Code auf nur ändern: EDITED, um nicht benötigte Teile zu entfernen.

$(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 
     }); 
    }); 
}); 

einschließlich bekommen von all diesen los:

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

EDIT: weniger ausführlich Version:

$("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 
    }); 
}); 

Arbeitsbeispiel: http://jsfiddle.net/R73vy/

+0

Noch besser, danke !! – user1913435

+2

Ich denke, es ist eine Erwähnung wert für Menschen, die auf der Suche nach einer Antwort stolpern, so wie ich es war, da ich ein wenig nachforschen musste, um dies zu realisieren (und das mag meine eigene Dummheit sein, wofür ich mich entschuldige) Sie benötigen das jquery.cookie-Plugin, damit dies funktioniert. Ich fand es unter dieser Adresse: https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js – Skryn

+0

@Skryn Messepunkt, es ist in der Geige als externe Ressource, aber nicht ausdrücklich genannt - und der Link in der Frage ist nun ungültig, wie es scheint. –

1

Es sollte < 1.6 mit jQuery arbeiten, aber mit 1.6 beginnen, sollten Sie jedes Auftreten von .attr("checked")-.prop("checked")

EDIT ändern: if Bedingung

 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 }); 
         } 
        ); 
       } 
      ); 
     } 
zur Überprüfung der Cookie geändert
+0

Vielen Dank !! – user1913435

1

Wenn Sie in einer Checkbox nur interessiert sind UND/ODER Sie wollen nicht die jQuery Cookie-Plugin für diese schließen, hier zwei Codezeilen:

//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'); }); 

Dies auch nicht verwenden c Ookies spart also ein paar Bytes Bandbreite. Wechseln Sie zu localStorage, um die Lebensdauer der gespeicherten Auswahl zu verlängern.