存储和检索cookie中多个select的值

时间:2014-03-13 16:46:17

标签: javascript jquery cookies

我有一个jquery函数,旨在通过为每个值设置一个cookie并在页面加载时从中填充字段来使表单值持久化。

看起来像这样:

$(function () {

var bindToCookie = function (identifier, alias) {
    var timetoKeep = 7;
    var readVal = CookieManager.readCookie(alias);
    //console.log(identifier + 'value = ' + readVal);
    if (readVal) {
        //console.log(identifier + 'value set= ' + readVal);
        $(identifier).val(readVal);
    }

    $(identifier).on('change', function () {
        CookieManager.createCookie(alias, $(identifier).val(), timetoKeep);
    });
};

bindToCookie('#todatepicker', 'todate');
bindToCookie('#fromdatepicker', 'fromdate');
bindToCookie('#languagepicker', 'language');
bindToCookie('#stationpicker', 'station');
bindToCookie('#programpicker', 'program');
bindToCookie('#sourcepicker', 'sourcepicker');

});

这适用于我的所有单个值,但字段'#sourcepicker'是一个多重选择,它只在选择单个值时按预期工作。例如,如果我选择值1,则加载1选择,但如果我选择1和4,则cookie保存为值1,4并且在重新加载时不会选择任何内容。我似乎能够使用语法$('#sourcepicker')来为jquery设置多个值.val([" 1"," 4"] );然而,如果我做$('#sourcepicker')。val([1,4]);

如何重新格式化此功能以正确存储和检索Cookie中多项选择的值?

1 个答案:

答案 0 :(得分:0)

multi-select返回所选值的字符串(以逗号分隔的列表) - 你需要编写一个可选的代码,当它在cookie中找到它时处理逗号分隔的列表:

if (readVal.indexOf(",") > -1) {
    /* make an an array out of readVal,
       select the options in the multi-select
       and so on */
}