2010-03-18 66 views
1

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

<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> 

有什么办法让导航离开该页面时填充甚至产品列表?我对浏览器工作原理的理解是,即使在浏览时,它们仍然保持页面状态。

我知道我可以只是把代码中

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

这将显式调用平变化的方法,但这种具有拨打电话到该网站的缺点,而实际上我想要的网页维持现有的州。

请帮忙!

回答

2

浏览器为什么要保持js操作导致的状态。大多数浏览器不会。

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

+0

谢谢。尽管我必须弄清楚实施情况,但这是我正在寻找的信息。由于浏览器(通常)不会保留JS操作导致的状态,因此我将尝试解决这个问题。 – 2010-03-19 15:29:19