我有一个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中多项选择的值?
答案 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 */
}