难题.难题.真是难...(互动下拉框问题)
难题.难题.真是难...(互动下拉框问题)
楼主clipper_clipper(clipper_clipper)2002-11-22 17:30:14 在 Web 开发 / ASP 提问 表结构如下:
id(城市编号),sheng(省份名称),city(城市名称)
1 浙江 杭州
2 浙江 宁波
3 浙江 温州
4 江苏 南京
5 江苏 苏州
6 江苏 无锡
7 安徽 合肥
8 安徽 黄山
将数据库里的记录取出
在一个sheng下拉框里放“省份名称”(唯一),在city下拉框里放“城市名称”(要与省份匹配正确关系),在sheng下拉框改变时,触发onchang事件,来改变city下拉框里的相应内容。并且不能刷新页面。(我的想法:是否要将他们都存放在数组中,且要确定他们的内在联系)
问题点数:100、回复次数:5Top
1 楼sunlai(燕儿)回复于 2002-11-22 17:36:05 得分 40
<script language="javascript">
<!--
function changeAddress()
{var str1,i,str2
str1=form1.AccAddr.options.value
i=str1.indexOf(",")
j=0
form1.textAddress2.options.length=0
while (i>=0)
{
str2= str1.substr(0,i)
form1.textAddress2.options=new Option(str2)
form1.textAddress2.options.value=str2
j=j+1
str1=str1.substr(i+1)
i=str1.indexOf(",")
}
form1.textAddress1.value=form1.AccAddr.options.text
}
function AddAddress2()
{
form1.textAddress2.value=form1.textAddress2.options.text
}
-->
</script>
<select name="AccAddr" onchange=changeAddress()>
<option selected value="">------------</option>
<%
set rs=server.createobject("adodb.recordset")
rs.open "select daAddress1 from DaAddress group by daAddress1 ",con
while not rs.eof
set rs2=server.createobject("adodb.recordset")
if rs("daAddress1").value="" then
rs2.open "select * from DaAddress where daAddress1="" ",con
else
rs2.open "select * from DaAddress where daAddress1=""& rs("daAddress1").value &"" ",con
end if
str=""
while not rs2.eof
str=str+ trim(rs2("daAddress2").value)+","
rs2.movenext
wend
rs2.close
%>
<option value=<%=str%> ><%=rs("daAddress1").value%></option>
<%
rs.movenext
wend
rs.close
%>
</select>Top
2 楼cww7107(笑三笑)回复于 2002-11-22 17:49:54 得分 5
开始把全部城市名称、和省名称放到一个数组里,当省名称下拉框被点时接受变量(省名称变量),然后依次与数组中的省名称对比,如相同,则添加到城市下拉菜单中。
Top
3 楼wpmsoft(红旗下的蛋)回复于 2002-11-22 17:50:55 得分 5
给你一个我收藏的小东东,请参考并仔细分析,相信会解决你的问题的。
贴子的ID号1028160
--------------------
与人玫瑰,手有余香
--------------------
Top
4 楼denghan(很久没来ASP版了)回复于 2002-11-22 18:03:50 得分 50
测试通过:
首先,你的数据库应该这样安排:做两个表
省表 sheng 城市表 city
sid sname cid cname sid
1 北京 1 密云县 1
2 广东 2 广州 2
3 ..... 3 深圳 2
4 珠海 2
5 ....
</head>
<%
dim rs
dim sql
dim count
set rs=server.createobject("adodb.recordset")
sql = "select * from city order by cid asc"
rs.open sql,conn,1,1
%>
<SCRIPT language="JavaScript">
var onecount;
onecount=0;
subcat = new Array();
<%
count = 0
do while not rs.eof
%>
subcat = new Array("<%= trim(rs("cname"))%>","<%= trim(rs("sid"))%>","<%= trim(rs("cid"))%>");
<%
count = count + 1
rs.movenext
loop
rs.close
%>
onecount=<%=count%>;
function changelocation(locationid)
{
document.form1.city.length = 0;
var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat == locationid)
{
document.form1.city.options = new Option(subcat, subcat);
}
}
}
</SCRIPT>
<SCRIPT language="javascript">
<!--
function CheckForm()
{
document.form1.txtcontent.value=document.form1.doc_html.value;
return true
}
//-->
</SCRIPT>
</head>
<body>
<form name=form1 onsubmit="check()">
省份 <%
sql = "select * from sheng"
rs.open sql,conn,1,1
if rs.eof and rs.bof then
response.write "请先添加省份。"
response.end
else
%>
<SELECT name="sid" onChange="changelocation(document.form1.sid.options.value)" ><%
do while not rs.eof
%><OPTION selected value="<%=trim(rs("sid"))%>"><%=trim(rs("sname"))%></OPTION>
<%
rs.movenext
loop
end if
rs.close
%>
</SELECT>
城市:<SELECT name="cid">
<OPTION selected value="">==请选城市==</OPTION>
</SELECT>
</form>
</body>
Top
5 楼clipper_clipper(clipper_clipper)回复于 2002-11-22 22:59:48 得分 0
谢谢大家!我已经放分.但是好象没显示出来Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
