1

我可以使用下面的 jquery 函数为复选框设置 cookie。我正在使用 map 函数将值读取到 cookie 中,并且 cookie 会自动保存。

但我无法读取 cookie 并在页面刷新时设置复选框值。我需要根据 cookie 值将复选框设置为选中/未选中。提前致谢。

HTML 代码

<input type="checkbox"  id="Option1" name="Option1" />
<input type="checkbox"  id="Option2" name="Option2" />
<input type="checkbox"  id="Option3" name="Option3" />
<input type="checkbox"  id="Option4" name="Option4" />
<input type="checkbox"  id="Option5" name="Option5" />

jQuery部分

var $checkboxes;
//set the cookie
function setcookie() {
    var options= $checkboxes.map(function() {
        if (this.checked) return this.name;
    }).get().join(',');
   $.cookie('new_cookie', options);

}

$(function() {
    $checkboxes = $('input:checkbox').change(setcookie);

});
4

3 回答 3

1

尝试这个:

var $checkboxes = $('input:checkbox');

//set the cookie
function setcookie() {
    var options = $checkboxes.map(function () {
        if (this.checked) return this.name;
    }).get().join(',');
    $.cookie('new_cookie', options);
}

$checkboxes.change(setcookie);

$(document).ready(function () {

    var values = $.cookie('new_cookie').split(',');
    $checkboxes.prop('checked', false);
    for(var $v in values) {
        $("input[name='" + values[$v] + "']").prop('checked', true);
    }
});
于 2012-11-17T18:38:20.633 回答
0

即使浏览器关闭或在多选项卡中,也可以使 cookie 持续更长时间。尝试

var $checkboxes;
//set the cookie
function setcookie() {
    var options= $checkboxes.map(function() {
        if (this.checked) return this.name;
    }).get().join(',');
   $.cookie('new_cookie', options,{expires:1});

}

$(function() {
    $checkboxes = $('input:checkbox').change(setcookie);

});

并在加载或刷新页面后使用

var alreadySetCookies= $.cookie('new_cookie').split(',');

for(var $cookie in alreadySetCookies) {
        $("input[name='" + alreadySetCookies[$cookie] + "']").attr("checked", "checked");
}
于 2012-11-17T18:43:41.243 回答
0

选择相应的复选框试试这个:

 var chk = $.cookie('the_cookie');

 $('#'+chk).prop('checked','checked');

或者

$("'#"+chk+"'").prop('checked','checked');

没有尝试只是假设这可能会有所帮助。

于 2012-11-17T18:33:51.127 回答