После множества проб и ошибок мне удалось сохранить в нескольких раскрывающихся списках значение выбора пользователя в файле cookie и предварительно выбрать пользовательский выбор из файлов cookie...
... но не в IE. Мои функции настройки файлов cookie достаточно просты. У меня есть два поля выбора с именами и идентификаторами «sol» и «pro». Я вызываю приведенные ниже функции, когда соответствующее поле выбора onChanges и (в идеале) solCookie и proCookie создаются с одним целым числом, представляющим индекс того, что выбрал пользователь.
function setSol() {
document.cookie= "solCookie=" + document.getElementById('sol').selectedIndex;
}
function setPro() {
document.cookie= "proCookie=" + document.getElementById('pro').selectedIndex;
}
Chrome 13 вполне доволен этим, Firefox 5 готов играть хорошо, но нет! В IE9 этого не будет!
http://imgur.com/a/yOrGd (Альбом примеров других браузеров для файлов cookie)
^ Вот в чем проблема. ^
Таким образом, кажется, что IE сохраняет всю строку кода в файле cookie. Как я могу это исправить? Имейте в виду, я новичок в javascript и кодировании в целом. Очень признателен!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Более подробное описание рабочего процесса. Поля выбора решения и продукта в конечном итоге являются фильтрами. Различные продукты подразделяются на решения, аналогичные отношениям между штатом и городом. Вот поля выбора.
<select name="sol" id="sol" size="1" style="margin-bottom: 0px;" onchange="setSol();populate(this)">
<option value="Choose a Solution">Choose a solution...</option>
<option value="Option One">Option One</option>
<option value="Option Two">Option Two</option>
<option value="Option Three">Option Three</option>
</select>
<select name="pro" id="pro" size="1" style="width: 323px; margin-bottom: 0px;" onchange="setPro();javascript:_SFSUBMIT_">
</select>
Как видите, как только пользователь выбирает параметр в 'sol', он вызывает setSol(), который устанавливает cookie 'solCookie', а затем вызывает метод populate() (не указан), который заполняет 'pro' другими параметрами. Как только пользователь выбирает вариант, proCookie сохраняется через setPro(), форма отправляется и страница обновляется.
Вот моя функция выбора файлов cookie/выбора. После обновления страницы эта функция вместе с практически идентичной функцией getSol() запускается onLoad, заполняя поля выбора тем, что было в куки.
function getPro(cookie_name) {
if (document.cookie); {
index = document.cookie.indexOf("proCookie");
if (index != -1) {
namestart = (document.cookie.indexOf("=", index) + 1);
nameend = document.cookie.indexOf(";", index);
if (nameend == -1) {
nameend = document.cookie.length;
}
var selPro = document.cookie.substring(namestart,nameend);
selPro = parseInt(selPro);
}
document.getElementById('pro').options[selPro].selected = true;
}
}