【问题标题】:store and retrieve value for multiple select in a cookie在 cookie 中存储和检索多项选择的值
【发布时间】:2014-03-13 16:46:16
【问题描述】:

我有一个 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').val(["1","4"]); 在 jquery 中为其设置多个值。而如果我这样做 $('#sourcepicker').val([1,4]);

如何重新格式化此函数以正确存储和检索 cookie 中的多选值?

【问题讨论】:

    标签: javascript jquery cookies


    【解决方案1】:

    多选返回所选值的字符串(逗号分隔列表)——当它在 cookie 中找到逗号分隔列表时,您需要编写一段可选的代码来处理它:

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

    【讨论】:

    • 所以我不确定如何格式化 cookie 中的值。在进行多项选择并执行 $('#sourcepicker').val();在控制台中,我在控制台中得到 ["1", "8"]。如果我将 cookie 设置为 ["1", "8"] $('#sourcepicker').val();返回空值。
    • 我会尝试按原样处理 cookie 中的值,在检索后将其分解为各个组成部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多