2014-03-13 73 views
0

我有一個jQuery的功能,旨在通過爲每個值設置一個cookie並在頁面加載填充字段從而使表單值持久。存儲和檢索值的多個選擇在一個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中多重選擇的值?

回答

0

選定值的多重選擇返回一個字符串(逗號分隔的列表) - 你需要編寫的代碼的可選位與逗號分隔的列表交易時,它發現它在Cookie:

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

所以我不知道如何格式化cookie中的值。做出多重選擇並做$('#sourcepicker')。val();在控制檯中,我在控制檯中獲得[「1」,「8」]。如果我將cookie設置爲[「1」,「8」] $('#sourcepicker')。val();返回null。 – user1469779

+0

我會嘗試使用cookie中的值,並在檢索後將其分解爲它的組成部分。 – slabrador