关于二级分类下拉菜单的写法

scully_sun 2005-11-10 11:24:19
目前要写一个二级分类下拉菜单,大类和小类分别存于access表中,页面上有first select和second select两个下拉菜单,first select有onchange事件
目前用的代码:
<select name="first" onChange="MM_jumpMenu('parent',this,0)">
<%
sql = "select [大类名称],[大类id] from [大类]"
set rs = conn.execute(sql)'取得父类的ID及名称
if rs.eof or rs.bof then
response.write "<option>-----</option>" '如果没有记录,就显示-----
else
while not(rs.eof or rs.bof) '有记录,就将父名称列出来,形成下拉。
response.write ("<option value='?sec=" & rs(1) & "'")
if cstr(rs(0)) = request.querystring("sec") then
response.write "selected"
end if
response.write (">" & rs(0) & "</option>")
rs.movenext
wend
rs.movefirst '将游标移到第一条,以备下面之用。
end if
%>
</select>
<select name="second">
<%if rs.eof or rs.bof then
response.write ("<option>--------</option>")
else
if request.querystring("sec") = "" then '获取跳转之后的sec值
temp= rs(1) '如果为空,就把temp的值设为第一条记录的值
else
temp= request.querystring("sec") '否则就为收到的值
end if
subsql = "select [小类名称] from [小类] where 大类id='"&temp&"'"
set subrs = conn.execute(subsql) '列出一切资料为temp的记录
if subrs.eof or subrs.bof then
response.write ("<option>-----</option>")
'如果没有记录,则在这个列表中显示"-----"
else
while not(subrs.eof or subrs.bof)'否则就用循环列出一切符合条件的记录。
response.write ("<option value=" & subrs(0) & ">" & subrs(0) & "</option>")
subrs.movenext
wend
end if

javascript里面是:
function MM_jumpMenu(targ,selObj,restore){ //v3.0
if (restore)
{
selObj.selectedIndex=0;
}
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");

}

但是每次触发onchange事件后,网页刷新一次,大类的下拉列表总是显示第一个选项,而不是触发事件前选定的选项。应该怎么改呢?类似csdn的二级分类下拉菜单是这样的思路吗?
...全文
420 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghongwen 2006-01-07
  • 打赏
  • 举报
回复
二级联动菜单是吧?其实不难,就用到一个跳转select,把参数传到本页,再接再跳.要几级都可以.
pyusksk503 2006-01-07
  • 打赏
  • 举报
回复
我的一级分类是商场名称,二级分类是商场所对应的城区名称
pyusksk503 2006-01-07
  • 打赏
  • 举报
回复
先把二级分类里面的数据事先放到一个数组当中,然后通过一级分类的onchange事件来触发调用一个函数,在这个函数中通过一级分类的数据到刚才形成的哪个数组当中去匹配数据,把正确的数据显示到二级下拉菜单里面就可以了.下面是代码:
dim conn,rs,strSQL,count1
strSQL = "select * from Forniture_DistrictInfo"
set rs = GetRS(strSQL)
%>
<SCRIPT language = "JavaScript">
var onecount;
onecount=0;
subcat = new Array();
<%
count1 = 0
do while not rs.eof
%>
subcat[<%=count1%>] = new Array("<%= trim(rs("DistrictName"))%>","<%= trim(rs("ShoppingMarketID"))%>","<%= trim(rs("DistrictID"))%>");
<%
count1 = count1 + 1
rs.movenext
loop
%>
onecount=<%=count1%>;
//由一级分类单击后自动出现二级分类
function changelocation(locationid)
{
document.myform.DistrictID.length = 0;
var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat[i][1] == locationid)
{
document.myform.DistrictID.options[document.myform.DistrictID.length] = new Option(subcat[i][0], subcat[i][2]);
}
}
}

</SCRIPT>
<%
strSQL="select distinct Forniture_ShoppingMarketInfo.MarketName ,Forniture_ShoppingMarketInfo.ShoppingMarketID from Forniture_ShoppingMarketInfo right join Forniture_DistrictInfo ON Forniture_ShoppingMarketInfo.ShoppingMarketID = Forniture_DistrictInfo.ShoppingMarketID"
Set rs1=Server.CreateObject("ADODB.Recordset")
rs1.open strSQl,conn,1,1
if rs1.eof and rs1.bof then
response.write "请先添加栏目。"
response.end
else
%>
<SELECT name="ShoppingMarketID" size="1" id="ShoppingMarketID" onChange="changelocation(document.myform.ShoppingMarketID.options[document.myform.ShoppingMarketID.selectedIndex].value)">
<option value="0">==商场名称==</option>
<%do while not rs1.eof%>
<option value="<%=rs1(1)%>"><%=rs1(0)%></option>
<%
rs1.movenext
loop
end if
rs1.close
set rs1=nothing
Free conn,rs
%>
</SELECT>
</div></TD>
</TR>
<TR>
<TD class=tdbg width=78 height=23><div align="center">区域名称:</div></TD>
<TD colspan="2" class=tdbg><select name="DistrictID" id="DistrictID">
<option value="0">==区域名称==</option>
</select></TD>
</TR>
lzhblacker 2005-11-22
  • 打赏
  • 举报
回复
而不是触发事件前选定的选项


--------------
刷新后就重新来的啦



用 cookies 记录 一下就行了吧
scully_sun 2005-11-22
  • 打赏
  • 举报
回复
写出来一个比较戆的分类关联下拉菜单,只是如果后退到这个页面的话就需要刷新一下。否则小类菜单就是空的.
piperzero 2005-11-10
  • 打赏
  • 举报
回复
良精全站系统的后台好象是你要的那种
zmy0611 2005-11-10
  • 打赏
  • 举报
回复
UP
zmy0611 2005-11-10
  • 打赏
  • 举报
回复
UP

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧