设为首页 | 加入收藏 | 
ASP+JS二级联动下拉列表分类[支持多浏览器]
作者:叶随风 时间:03月13日 来源:http://www.popasp.com 浏览次数:【字号: 】 

  此代码比较常用,比较简单的二级联动下拉列表分类。ASP+JS+数据库实现。

  这是我使用的比较早的联动分类,近期做了简单的完善。

  有什么问题,与我联系吧!

  这个版本,支持多浏览器!

泡泡ASP相关代码:
<%
’**************************************************
’常用二级分类下拉列表[数据库版]
’叶随风(LeafinWind)
’QQ:19855466
’http://www.popasp.com/
’说明:
’支持多浏览器
’所有类别信息在同一个表中
’表结构:InfoClass[表名]
’ID:   自动编号
’ClassName: 类别名称[文本]
’PID:   父类id号[数字]
’ClassIndex: 类别索引[数字],用于排序,可有可无
’**************************************************
Dim SubClsCount, rsCl
Set rsCl = Server.Createobject("Adodb.Recordset") 
rsCl.Open "Select * From [InfoClass] Where PID <> 0 Order By ClassIndex, ID",Conn,1,1    ’小类
%> 
<script language = "JavaScript"> 
var TCount = 0; 
subCls = new Array(); 
<% 
SubClsCount = 0
Do While Not rsCl.Eof 
 %>
 //数组中三个元素的说明:(小类ID:小类Select的value内容,小类父ID:所属的大类的ID,小类名称:Select列表显示的内容)
 subCls[<%=SubClsCount%>] = new Array("<%=Trim(rsCl("ID"))%>","<%=rsCl("PID")%>","<%=Trim(rsCl("ClassName"))%>"); 
 <% 
 SubClsCount = SubClsCount + 1
 rsCl.Movenext 
Loop 
rsCl.Close
Set rsCl = Nothing
%> 
TCount=<%=SubClsCount%>; 
function changelocation(locationid) 

 document.getElementById("SmallClassID").length = 0; 
 var locationid = locationid; 
 var i;
 for (i=0;i < TCount; i++) 
 { 
  if (subCls[i][1] == locationid) 
  { 
   //(前边:字段三内容,显示在列表中;后边:字段一内容,显示在VALUE值中!)
   document.getElementById("SmallClassID").options[document.getElementById("SmallClassID").length] = new Option(subCls[i][2], subCls[i][0]); 
  }
 }
 if (document.getElementById("SmallClassID").options.length <= 0)
 {
  document.getElementById("SmallClassID").options[document.getElementById("SmallClassID").length] = new Option("暂无小类", 0);
 }

</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>ASP+JS的二级分类</title>
</head>
<body">
<%
Dim SelClassID
Set rsCl = Server.Createobject("Adodb.Recordset") 
rsCl.Open "Select * From [InfoClass] Where PID = 0 Order By ClassIndex, ID",Conn,1,1      ’大类
If rsCl.Eof And rsCl.Bof Then 
 Response.Write "请添加顶级(大)类别!" 
 Response.End()
Else
 %>
 大类:
 <select name="BigClassID" size="1" id="BigClassID" onChange="changelocation(document.getElementById(’BigClassID’).options[document.getElementById(’BigClassID’).selectedIndex].value)">
    <%
 SelClassID = rsCl("ID") 
 Do While Not rsCl.Eof 
  %>
    <option value="<%=rsCl("ID")%>"><%=rsCl("ClassName")%></option>
    <% 
  rsCl.Movenext 
 Loop 
 %>
 </select>
 <%
End If 
rsCl.Close 
%>
小类:
<%
Dim SmallClassList
SmallClassList = "<select name=SmallClassID id=SmallClassID>"
rsCl.Open "Select * From [InfoClass] Where PID = "&SelClassID&" Order By ClassIndex, ID" ,Conn,1,1    ’小类
If Not (rsCl.Eof And rsCl.Bof) Then 
 Do While Not rsCl.Eof
  SmallClassList = SmallClassList & "<option value=’"&rsCl("ID")&"’>"&rsCl("ClassName")&"</option>"
  rsCl.Movenext 
 Loop 
Else
 SmallClassList = SmallClassList & "<option value=’0’>暂无小类</option>"
End If 
rsCl.Close 
Set rsCl = Nothing
SmallClassList = SmallClassList & "</select>"
Response.Write(SmallClassList)
%>
</body>
</html>

  里边的变量或字段名,自己根据需要修改,呵呵……修改时,一定要注意细节部分,避免发生不必要的错误。

 * 以上任何内容或信息侵犯了你的利益,请及时联系!
泡泡搜索
最新文章
热点文章
精彩推荐
 - TOP