用JSP+JavaScript打造二级级联下拉菜单

  • 来源: CCIDNET 作者: xiaosu   2009-09-13/16:30
  •     JSP+JavaScript打造二级级联下拉菜单:

     

    class(一级栏目信息):classId(自动编号),className(栏目名称), Nclass(二级栏目信息), NclassId(自动编号),NclassName(栏目名称),parentId(一级栏目id,与class表中的classId关联)

     

     

    <%@ page contentType=text/html; charset=GB2312 language=java errorPage=../error.jsp %> 
    <%@ include file=../conn.jsp%> 
    <%@ include file=../ds.jsp%> 
    <%@ taglib uri=http://java.sun.com/jsp/jstl/sql divfix=sql %> 
    <%request.setCharacterEncoding(gb2312); %> 
    <HTML><HEAD> 
    <META http-equiv=Content-Type content=text/html; charset=gb2312> 
    
    <TITLE>级联菜单</TITLE> 
    <LINK rel=stylesheet type=text/css href=style.css> 
    </HEAD> 
    <!--从数据库中得到二级栏目信息--> 
    <%String sql=select * from Nclass order by NclassId asc; 
    ResultSet rs=stmt.executeQuery(sql); 
    %> 
    <!--将二级栏目信息保存到数组subcat中--> 
    <script type=text/javascript> 
    var onecount; 
    onecount=0; 
    subcat = new Array(); 
            <% 
            int count = 0; 
            while(rs.next()){ 
            %> 
    subcat[<%=count%>] = new Array(<%=rs.getString(NclassName)%>,
    <%=rs.getString(NclassId)%>,<%=rs.getString(parentId)%>); 
            <% 
            count++; 
            } 
            rs.close(); 
            %> 
    onecount=<%=count%>; 
    <!--决定select显示的函数--> 
    function changelocation(locationid) 
        { 
        document.myform.NclassId.length = 0; 
    
        var locationid=locationid; 
        var i; 
        for (i=0;i < onecount; i++) 
            { 
                if (subcat[i][2] == locationid) 
                { 
                    document.myform.NclassId.options[document.myform.NclassId.length] = new 
    Option(subcat[i][0], subcat[i][1]); 
                }        
            } 
            
        }    
    </script> 
    
    <FORM method=POST name=myform action=adminsave.jsp?action=add> 
      <TABLE> 
       
        <TR> 
          <TD>一级分类</TD> 
          <TD>  
            <SELECT name=classId onChange=changelocation(document.myform.classId.options
    [document.myform.classId.selectedIndex].value) size=1> 
              <OPTION selected value>==请选一级分类==</OPTION> 
            <sql:query var=query dataSource=___FCKpd___0gt; 
              SELECT * FROM class 
           </sql:query> 
    <c:forEach var=row items=___FCKpd___0gt; 
     <option value=___FCKpd___0gt;___FCKpd___0lt;/option> 
    </c:forEach> 
    </select> 
          </TD> 
          <TD>选择二级分类</TD> 
          <TD> 
            <SELECT name=NclassId> 
              <OPTION selected value>==请选二级分类==</OPTION> 
            </SELECT> 
          </TD> 
        </TR> 
    </TABLE> 
      
    </FORM> 
    </BODY> 
    </HTML>
    <%@ page contentType=text/html; charset=GB2312 language=java errorPage=../error.jsp %> 
    <%@ include file=../conn.jsp%> 
    <%@ include file=../ds.jsp%> 
    <%@ taglib uri=http://java.sun.com/jsp/jstl/sql divfix=sql %> 
    <%request.setCharacterEncoding(gb2312); %> 
    <HTML><HEAD> 
    <META http-equiv=Content-Type content=text/html; charset=gb2312> 
    
    <TITLE>级联菜单</TITLE> 
    <LINK rel=stylesheet type=text/css href=style.css> 
    </HEAD> 
    <!--从数据库中得到二级栏目信息--> 
    <%String sql=select * from Nclass order by NclassId asc; 
    ResultSet rs=stmt.executeQuery(sql); 
    %> 
    <!--将二级栏目信息保存到数组subcat中--> 
    <script type=text/javascript> 
    var onecount; 
    onecount=0; 
    subcat = new Array(); 
            <% 
            int count = 0; 
            while(rs.next()){ 
            %> 
    subcat[<%=count%>] = new Array(<%=rs.getString(NclassName)%>,
    <%=rs.getString(NclassId)%>,<%=rs.getString(parentId)%>); 
            <% 
            count++; 
            } 
            rs.close(); 
            %> 
    onecount=<%=count%>; 
    <!--决定select显示的函数--> 
    function changelocation(locationid) 
        { 
        document.myform.NclassId.length = 0; 
    
        var locationid=locationid; 
        var i; 
        for (i=0;i < onecount; i++) 
            { 
                if (subcat[i][2] == locationid) 
                { 
                    document.myform.NclassId.options[document.myform.NclassId.length] = new 
    Option(subcat[i][0], subcat[i][1]); 
                }        
            } 
            
        }    
    </script> 
    
    <FORM method=POST name=myform action=adminsave.jsp?action=add> 
      <TABLE> 
       
        <TR> 
          <TD>一级分类</TD> 
          <TD>  
            <SELECT name=classId onChange=changelocation(document.myform.classId.options
    [document.myform.classId.selectedIndex].value) size=1> 
              <OPTION selected value>==请选一级分类==</OPTION> 
            <sql:query var=query dataSource=___FCKpd___0gt; 
              SELECT * FROM class 
           </sql:query> 
    <c:forEach var=row items=___FCKpd___0gt; 
     <option value=___FCKpd___0gt;___FCKpd___0lt;/option> 
    </c:forEach> 
    </select> 
          </TD> 
          <TD>选择二级分类</TD> 
          <TD> 
            <SELECT name=NclassId> 
              <OPTION selected value>==请选二级分类==</OPTION> 
            </SELECT> 
          </TD> 
        </TR> 
    </TABLE> 
      
    </FORM> 
    </BODY> 
    </HTML>

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多