页面刷新值不变:
<style>  
   .userData  {behavior:url(#default#userdata);}  
</style><select id="select1" class="userData">  
 <option>option1</option>  
 <option>option2</option>  
 <option>option3</option>  
 <option>option4</option>  
</select>  <script language=javascript>
function saveSelectedIndex()
{
    obj.setAttribute("sSelectValue",obj.selectedIndex);  
    obj.save("oSltIndex");  
}
function loadSelectedIndex()
{  
    obj.load("oSltIndex");  
    obj.selectedIndex=obj.getAttribute("sSelectValue");  
}
var obj=document.all.select1;  
    obj.attachEvent('onchange',saveSelectedIndex);
    window.attachEvent('onload',loadSelectedIndex)  
</script>

解决方案 »

  1.   

    我说的不是刷新,是回退后的页面,
    而且我说的是前面的下来列表的选中值变化,使后面的下拉列表的选项改变。
    下面是部分代码,因为和ORACLE相连无法在其他机子上调试
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
    <%@ page import="java.sql.*"%>
    <%@page import="cn.cbsw.beans.pub.*"%>
    <jsp:useBean id="stmt" scope="page" class="cn.cbsw.beans.singleness.ConnectOracle.ConnectOracle" />
    <script language="javascript">
    var val=new Array();
    var valcounty=new Array();<%
    menuop mop=new menuop();
    String strWeburl=mop.GetWebUrl(request,"AddScCert");
    String Weburl = mop.GetWebAppUrl(request);
    String strSql="";
    ResultSet result=null;
    int i=0;
    result=stmt.executeQuery("select * from viewprovcity");
    while(result.next())
    {
    out.println("val["+i+"]=new Array('"+result.getString("provid")+"','"+result.getString("regionname")+"','"+result.getString("cityid")+"')");
        i=i+1;
    }
    result=stmt.executeQuery("select * from unitencoding");
    i=0;
    while(result.next())
    {   
    out.println("valcounty["+i+"]=new Array('"+result.getString("unitid").substring(0,4)+"','"+result.getString("unitname")+"','"+result.getString("unittypeid")+"')");
        i=i+1;
    }
    %>
    function saveSelectedIndex()
    {
        obj.setAttribute("sSelectValue",obj.selectedIndex);  
        obj.save("oSltIndex");  
    }
    function loadSelectedIndex()
    {  
        obj.load("oSltIndex");  
        obj.selectedIndex=obj.getAttribute("sSelectValue");  
    }function changeprov(str)
    {  
     
        document.forms.CityId.length=0;
    document.forms.CityId.options[0] = new Option('所在市','0');
    document.forms.UnitID.length=0;
    document.forms.UnitID.options[0] = new Option('企业名称','0');
    for (i=0;i<val.length;i++)
    {
    if ((val[i][0] == str))
    {
    document.forms.CityId.options[document.forms.CityId.length] = new Option(val[i][1], val[i][2]);
    }
    }
    }function chanegetype()
    {document.forms.Unittype.length=0;
    document.forms.Unittype.options[0] = new Option('企业类型','0');
    document.forms.Unittype.options[1] = new Option('生产企业','1');
    document.forms.Unittype.options[2] = new Option('流通企业','2');
    document.forms.UnitID.length=0;
    document.forms.UnitID.options[0] = new Option('企业名称','0');
    }function changeunit(str,str1)
    {document.forms.UnitID.length=0;
    document.forms.UnitID.options[0] = new Option('企业名称','0');
    for (i=0;i<valcounty.length;i++)
    {   
            if((valcounty[i][0] == str)&&(valcounty[i][2] == str1))
    document.forms.UnitID.options[document.forms.UnitID.length] = new Option(valcounty[i][1], valcounty[i][2]);

    }
    }
    </script>
    <html> 
    <head>
    <title>Z-AddressList</title>
    </head>
    <body>
    <CENTER>Z-ADDRESSLIST</CENTER>
    Welcome <%=request.getParameter("userid")%><br>
    <form name="forms" method="post" action="<%=strWeburl%>" enctype="multipart/form-data" >
    <table width="90%" align="center" border="1" cellpadding="0" cellspacing="0" bordercolor="#999999" class="text12-black" style="border-collapse: collapse">
                                  <tr>
                                    <td width="17%" height="26">企业名称</td>
                                    
                                  </tr>
                                  <tr>
                                    <td height="26">所在地区</td>
                                   <td height="26" colspan="3">
    <%
          strSql="select * from nation.povince";
          result=stmt.executeQuery(strSql);
    %>
    <select name="ProvId"  onChange="changeprov(this.value)">
    <option value="0" selected>所在省或直辖市</option>
     <%while (result.next()){%>              
      <option value="<%=result.getString("provid")%>"><%=result.getString("provname")%></option>
      <%}%>
                                    </select>
                                      <select  name="CityId" onChange="chanegetype()" >
                                      <option value="0" selected>所在市</option>
      </select>
                                      </td>
                                  </tr>
                                 <tr>
                                    <td height="26">企业名称(全称):</td>
                                   <td height="26" colspan="3">
                         <select name="Unittype"  onChange="changeunit(CityId.value,this.value)">
                            <option value="0" selected>企业类型</option>
    <option value="1">生产企业</option>   
    <option value="2">流通企业</option>
      </select>
                         <style>  
       .userData  {behavior:url(#default#userdata);}  
         </style>
                         
                         <select name="UnitID"  class="userData">
                                      <option value="0" selected>企业名称</option>
     </select>
    <tr> 
                                          <td width="40%" height="42">  
                                            <div align="center">
                                              <input type="submit" name="Submit" value=" 提 交 " >
                                          </div></td>
                                          <td width="60%">  
                                            <div align="left">
                                              <input type="reset" name="Submit2" value=" 重 置 ">
                                          </div></td>
                                        </tr>
     
     
     
                         
            </table>                  
    </form>
    </body>
    </html>
      

  2.   

    代码我就不写了,说说思路。 (我有测试成功)如果表单内容不是js动态生成的,且未设置不让缓存,那么数据会自动保留.
    楼上的代码是可以跳走N个页面后再回来时回复数据的。
    对于用浏览器的“后退”能够到达的页面,仅仅:
    <select id="select1" class="userData">  
     <option>option1</option>  
     <option>option2</option>  
     <option>option3</option>  
     <option>option4</option>  
    </select> 
    会自动保留状态的。楼主问的关键在于js动态生成的下拉列表的内容如何恢复,
    可以在页面onbeforeunload事件处理函数中,使用
        cookie
        userdata
        form element (may be hidden form element)
    中的任何一种来实现记录数据,再次回来时读取,并调用动态下拉列表的设置函数。
    视不同的代码实现而异。还有一种简便的方法是把<select>的outerHTML直接存起来,然后去恢复它。
      

  3.   

    JSP我不明白。
    PHP中对SESSION CACHE 进行支持就可以达到上述效果。