用户选择使用cookie,首页刷新不记得了

时间:2014-06-21 03:53:54

标签: javascript jquery cookies

我有一些代码在第二页刷新后完美运行。基本上我有一个下拉选项,选择会在URL的末尾添加一个排序顺序,在选择此排序顺序后,页面将被刷新。

这是我的问题在这篇文章的背面,cookie似乎没有保持用户选择,但随后的页面刷新甚至通过catalouge的分页cookie保持用户选择是完美的,这只是第一次选择后加载页面。

这是我的代码

<!-- List header -->
<select id="Selection" class="sorter" onchange="document.cookie= 'myDDIdx = ' + this.selectedIndex + '; path=/;';location=this.options[[this.selectedIndex]].value" style="float:right;margin-right:8px;">
 <option value="">Sort by</option>
 <option value="?orderby=0">Code</option>
 <option value="?orderby=1">Title A-Z</option>
 <option value="?orderby=2">Title Z-A</option>
 <option value="?orderby=3">Brand</option>
 <option value="?orderby=4">Lowest price</option>
 <option value="?orderby=5">Highest price</option>
 <option value="?orderby=6">Lowest Quantity</option>
 <option value="?orderby=7">Highest Quantity</option>
 </select>
 <div style="clear:both;"></div>


 <script>
     var sidx = document.cookie.indexOf("myDDIdx");
      if(sidx != -1)
          window.onload = function () { document.getElementById("Selection").selectedIndex =                     document.cookie.substr(sidx + 8,1); }
 </script>

是否有人能够建议我如何解决此问题?代码剪辑 - 非常感谢。

1 个答案:

答案 0 :(得分:1)

我相信你获取cookie的方式不正常。我已稍微更改了代码以使其正常工作。另请注意,更改页面时使用window.location而不仅仅是位置。

window.onload = function () {
    var cookies = document.cookie,
        sidx = !!cookies ? cookies.match(/myDDIdx=([0-9]+?);?/) : false;

    if (!!sidx && sidx.length >= 2) {
        document.getElementById("Selection").selectedIndex = sidx[1];
    }
};

document.getElementById("Selection").onchange = function () {
    document.cookie = 'myDDIdx=' + this.selectedIndex + '; path=/;';
    window.location = this.options[[this.selectedIndex]].value;
};

DEMO