关于下拉框联动的问题,急在线等!

chb_2000_0 2004-09-13 08:47:40
两个下拉框的数据是从两个不同的表里面读取出来,之间存在一定的依赖关系,要求对应联动!且在本地实现,举个例子说,
一个下拉框有数据 1 另外一个是 2
value 显示内容 value 显示内容
01 mm 001 xx (01)
02 cc 002 xxx (02)
03 44 003 sdfa (03)

而实际上2里面还有个与1相关的字段如上括号所示!请高手帮帮忙啊 5555
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinhong618 2004-09-13
  • 打赏
  • 举报
回复
你还是研究一下这个吧
<%
dim conn,constr
constr="driver={microsoft access driver (*.mdb)};uid=admin;pwd=数据库密码;dbq="& server.mappath("class.mdb")
set conn=server.createobject("adodb.connection")
conn.open constr

set rs=server.createobject("adodb.recordset")
rs.open "select * from school order by anclassid",conn,1,1%>
<script language = "JavaScript">
var onecount;
onecount=0;
subcat = new Array();
<%
count = 0
do while not rs.eof
%>
subcat[<%=count%>] = new Array("<%= trim(rs("anclassid"))%>","<%= rs("anclass")%>","<%= rs("nclass")%>");
<%
count = count + 1
rs.movenext
loop
rs.close
%>

onecount=<%=count%>;

function changelocation(locationid)
{
document.form.Nclassid.length = 0;

var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat[i][0] == locationid)
{
document.form.Nclassid.options[document.form.Nclassid.length] = new Option(subcat[i][2], subcat[i][2]);
}
}

}
</script>
<%
set rs=server.createobject("adodb.recordset")
rs.open "select distinct anclassid,anclass from school order by anclassid",conn,1,1
if rs.eof and rs.bof then
response.write "请先添加栏目。"
response.end
else
%>
<form name="form">
<select name="anclassid" size="1" id="class" onChange="changelocation(document.form.anclassid.value)">
<option selected value="<%=rs("anclassid")%>"><%=trim(rs("anclass"))%></option>
<% dim selclass
selclass=rs("anclassid")
rs.movenext
do while not rs.eof
%>
<option value="<%=rs("anclassid")%>"><%=trim(rs("anclass"))%></option>
<%
rs.movenext
loop
end if
rs.close
%>
</select>
<select name="Nclassid">
<%rs.open "select * from school where anclassid="&selclass ,conn,1,1
if not(rs.eof and rs.bof) then
%>
<option selected value="<%=rs("nclass")%>"><%=rs("nclass")%></option>
<% rs.movenext
do while not rs.eof%>
<option value="<%=rs("nclass")%>"><%=rs("nclass")%></option>
<% rs.movenext
loop
end if
rs.close
set rs = nothing
%>
</select>


</form>
mendel 2004-09-13
  • 打赏
  • 举报
回复
我的解决方法(自己用过,也是从数据库中读取)

1、先从数据库中读取select1所需要的数据
2、通过循环从数据库中读取与select1所对应的选项数据
3、调用的时候,把这些数值传给一段js代码,比如changeselect(str1,str2,selectvalue)
4、在js代码中分解这两个字符串,并做成数据
5、通过传递过来的selectvalue判断所对应的组数
6、通过js改变select2的列表内容
zltostem 2004-09-13
  • 打赏
  • 举报
回复
楼主,这样说的话,你不觉得题目出得有问题吗,

既然不能"01"和"001"对应,也不能含有"01",那我想问一句,

xx (01)
xxx (02)
sdfa (03)

这种关系是怎么建立起来的,请解释一下,不明白原理没法找到答案~~~
chb_2000_0 2004-09-13
  • 打赏
  • 举报
回复
晕啊,你还是没有明白我的意思,01 和001 不一定是对应的! 我是随便设置的:) 帮忙再想想办法,谢谢拉
zltostem 2004-09-13
  • 打赏
  • 举报
回复
<script language="javascript">
<!--
function fncchange(strv)
{
var o = document.all.s2;
for(var i=0;i<o.length;i++)
{
if(o.options[i].value.substr(o.options[i].value.length-2,2) == strv)
o.options[i].selected = true;
}
}
//-->
</script>

<select name=s1 onchange="fncchange(this.value);">
<option value=01>mm
<option value=02>cc
<option value=03>44
</select>
<select name=s2>
<option value=001>xx
<option value=002>xxx
<option value=003>sdfa
</select>
chb_2000_0 2004-09-13
  • 打赏
  • 举报
回复
这样不行啊,第二列表要求显示的必须是原来的内容,有什么办法使他隐藏起来
zltostem 2004-09-13
  • 打赏
  • 举报
回复
<script language="javascript">
<!--
function fncchange(strv)
{
var o = document.all.s2;
for(var i=0;i<o.length;i++)
{
if(o.options[i].text.substr(o.options[i].text.length-2,2) == strv)
o.options[i].selected = true;
}
}
//-->
</script>

<select name=s1 onchange="fncchange(this.value);">
<option value=01>mm
<option value=02>cc
<option value=03>44
</select>
<select name=s2>
<option value=001>xx01
<option value=002>xxx02
<option value=003>sdfa03
</select>

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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