1

我已经使用 JQuery 编写了一个级联下拉列表。我编写的代码有效;级联列表更改时,更新级联到列表。但是当我离开页面然后按下浏览器上的后退按钮时,CASCADED 下拉列表会丢失其值。这是我的代码(类别列表在更改时填充产品列表):

<select id="CategoryList" onchange="CategoryList_OnChange()">
    <option value="" selected="selected"></option>
    <option value="1" selected="selected">Food</option>
    <option value="2" selected="selected">Toys</option>
    <option value="3" selected="selected">Books</option>
</select>

<select id="ProductList"></select>

<script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>

<script type="text/javascript">
    function CategoryList_OnChange() {
        var selected = $('#CategoryList').val();
        if (selected != null && selected != '') {
            $.getJSON('SelectList/ProductList/' + selected, function(selectList) {
                $('#ProductList option').remove();
                $.each(selectList, function(index, value) {
                    $('#ProductList').append("<option value='" + value.Value + "'>" + value.Text + "</option>");
                });
            });
        }        
    }
</script>

即使离开页面,有什么方法可以保持 ProductList 的填充?我对浏览器如何工作的理解是,它们旨在保持页面状态,即使在导航离开时也是如此。

我知道我只能将代码放入

$(document).ready(function() { ... });

这将显式调用 onchange 方法,但这具有调用网站的缺点,而实际上我希望页面保持 EXISTING 状态。

请帮忙!

4

1 回答 1

2

为什么浏览器要保留 js 操作产生的状态。大多数浏览器不会。

您可以尝试使用cookie 库并保存选择的类别(如果有)。当用户稍后返回页面并且同时还没有清除 cookie 时,您可以从 cookie 中读取值并自动发出$.getJSON“重新填充”产品列表的请求

于 2010-03-18T12:04:10.810 回答