现在有一个js的下拉列表,是用数组做的,做的很ok的但是有个遗憾就是,表单选择或者提交后,不能呈现已选择的值,也就是不能selected代码如下<script>
<%
'二级数据保存到数组
Dim count2,cityRS,citySQL
set cityRS=server.createobject("adodb.recordset")
citySQL="select * from case_info"
cityRS.open citySQL,conn,1,1
%>
var subval2 = new Array();
//数组结构:一级根值,二级根值,二级显示值
<%
count2 = 0
do while not cityRS.eof
%>
subval2[<%=count2%>] = new Array('<%=cityRS("case_id")%>','<%=cityRS("tel_people")%>','<%=cityRS("tel_people")%>')
<%
count2 = count2 + 1
cityRS.movenext
loop
cityRS.close
%>
function changeselecta(locationid)
{
document.form1.tel_people.length = 0;
document.form1.tel_people.options[0] = new Option('请选择机主姓名','');
for (i=0; i<subval2.length; i++)
{
if (subval2[i][0] == locationid)
{document.form1.tel_people.options[document.form1.tel_people.length] = new Option(subval2[i][2],subval2[i][1]);}
}
}
</script>大家帮忙看看,如果说我想把
<%if request("tel_people")=provinceRS("tel_people") then%>selected<%end if%>
这个代码加进去,在上面的处理部分中应该怎么去加呢?
<%
'二级数据保存到数组
Dim count2,cityRS,citySQL
set cityRS=server.createobject("adodb.recordset")
citySQL="select * from case_info"
cityRS.open citySQL,conn,1,1
%>
var subval2 = new Array();
//数组结构:一级根值,二级根值,二级显示值
<%
count2 = 0
do while not cityRS.eof
%>
subval2[<%=count2%>] = new Array('<%=cityRS("case_id")%>','<%=cityRS("tel_people")%>','<%=cityRS("tel_people")%>')
<%
count2 = count2 + 1
cityRS.movenext
loop
cityRS.close
%>
function changeselecta(locationid)
{
document.form1.tel_people.length = 0;
document.form1.tel_people.options[0] = new Option('请选择机主姓名','');
for (i=0; i<subval2.length; i++)
{
if (subval2[i][0] == locationid)
{document.form1.tel_people.options[document.form1.tel_people.length] = new Option(subval2[i][2],subval2[i][1]);}
}
}
</script>大家帮忙看看,如果说我想把
<%if request("tel_people")=provinceRS("tel_people") then%>selected<%end if%>
这个代码加进去,在上面的处理部分中应该怎么去加呢?
<%
'二级数据保存到数组
Dim count2,cityRS,citySQL
set cityRS=server.createobject("adodb.recordset")
citySQL="select * from case_info"
cityRS.open citySQL,conn,1,1
%>
var subval2 = new Array();
//数组结构:一级根值,二级根值,二级显示值
<%
count2 = 0
do while not cityRS.eof
%>
subval2[<%=count2%>] = new Array('<%=cityRS("case_id")%>','<%=cityRS("tel_people")%>','<%=cityRS("tel_people")%>')
<%
count2 = count2 + 1
cityRS.movenext
loop
cityRS.close
%>
function changeselecta(locationid)
{
document.form1.tel_people.length = 0;
document.form1.tel_people.options[0] = new Option('请选择机主姓名','');
for (i=0; i<subval2.length; i++)
{
if (subval2[i][0] == locationid)
{document.form1.tel_people.options[document.form1.tel_people.length] = new Option(subval2[i][2],subval2[i][1]);}
}
}
</script> <form method="post" action="TelList_Details.asp" name="form1">
<td width="8%"> 请选择 </td>
<td width="19%"><%
Dim count1,provinceRS,provinceSQL
set provinceRS=server.createobject("adodb.recordset")
provinceSQL="select distinct case_name,case_id from Case_Info"
provinceRS.open provinceSQL,conn,1,1
%> <select name="case_id" id="case_id" onChange="changeselecta(this.value)">
<option value="">请选择信息</option>
<%do while not provinceRS.eof%>
<option value="<%=provinceRS("case_ID")%>" <%if CInt(request("case_ID"))=provinceRS("case_ID") then%>selected<%end if%>><%=provinceRS("case_name")%></option>
<%
provinceRS.movenext
loop
provinceRS.close
set provinceRS = nothing
%>
</select></td>
<td width="8%"> 机主姓名 </td> <td width="15%"><select name="tel_people" id="tel_people" onChange="document.form1.submit();">
<option value="">请选择机主姓名</option>
</select></td>
</form>
window.onload=function()(
var val = "<%=request("tel_people")%>";
//然后遍历select options
var sel = document.form[0].tel_people;
for(var i=0;i<sel.options;i++){
if(sel.options[i].value==val){sel.options[i].selected=true;break;}
}
)
<script>
window.onload=function()(
var val = "<%=request("tel_people")%>";
//然后遍历select options
var sel = document.form[0].tel_people;
for(var i=0;i<sel.options;i++){
if(sel.options[i].value==val){sel.options[i].selected=true;break;}
}
)
</script>
<%end if%>
if(sel.options[i].value==val){sel.options[i].selected=true;break;}
要是没值肯定达不到你想要的效果了!
在第二个列表选择后,需要提交表单
<%if CInt(request("case_ID"))=provinceRS("case_ID") then%>selected <%end if%>
这个能选择到,关键是提交后第二个列表tel_people无法获取到已选择的值
function changeselecta(locationid)
{
document.form1.tel_people.length = 0;
document.form1.tel_people.options[0] = new Option('请选择机主姓名','');
for (i=0; i<subval2.length; i++)
{
if (subval2[i][0] == locationid)
{document.form1.tel_people.options[document.form1.tel_people.length] = new Option(subval2[i][2],subval2[i][1]);}
}
}
里添加获取选择值selected的处理
但是楼上有位仁兄的代码我用了,不行诶
<!--
<%
'二级数据保存到数组
Dim count1,cityRS,citySQL
set cityRS=server.createobject("adodb.recordset")
citySQL="select * from city order by shiorder"
cityRS.open citySQL,conn,1,1
%>
var subval2 = new Array();
//数组结构:一级根值,二级根值,二级显示值
<%
count1 = 0
do while not cityRS.eof
%>
subval2[<%=count1%>] = new Array('<%=cityRS("Shengid")%>','<%=cityRS("id")%>','<%=cityRS("shiname")%>')
<%
count1 = count1 + 1
cityRS.movenext
loop
cityRS.close
%>
function changeselect1(locationid)
{
document.form1.city.length = 0;
document.form1.city.options[0] = new Option('请选择城市','');
for (i=0; i<subval2.length; i++)
{
if (subval2[i][0] == locationid)
{document.form1.city.options[document.form1.city.length] = new Option(subval2[i][2],subval2[i][1]);}
}
}
//-->
</script>
<select name="province" class="buttonmain" id="province" onChange="changeselect1(this.value)">
<option value="">请选择省份</option>
<%
dim provinceRS,provinceSQL
set provinceRS = server.createobject("adodb.recordset")
provinceSQL = "select * from province order by shengorder"
provinceRS.open provinceSQL,conn,1,1
do while not provinceRS.eof
if provinceRS("id") = province then
response.Write "<option value="&provinceRS("id")&" selected>"&provinceRS("shengname")&"</option>"
else
response.Write "<option value="&provinceRS("id")&">"&provinceRS("shengname")&"</option>"
end if
provinceRS.movenext
loop
provinceRS.close
set provinceRS = nothing
%>
</select>
<select name="city" class="buttonmain" id="city">
<option value="">请选择城市</option>
<%
sql = "select * from city where Shengid = "&province&""
rs.open sql,conn,1,1
do while not rs.eof
if rs("id") = city then
response.Write "<option value="&rs("id")&" selected>"&rs("shiname")&"</option>"
else
response.Write "<option value="&rs("id")&">"&rs("shiname")&"</option>"
end if
rs.movenext
loop
rs.close
%>
</select> 上面这段代码是在修改页面的代码
红色部分为数据库中的值。
我想这个和你想要的结果差不多吧!!
在二级联动中,测试成功了
但是同样的代码,放到三级中去,确失败了
为什么呢?
<!--
<%
'二级数据保存到数组
Dim count2,cityRS,citySQL
set cityRS=server.createobject("adodb.recordset")
citySQL="select * from sys_city"
cityRS.open citySQL,conn,1,1
%>
var subval2 = new Array();
//数组结构:一级根值,二级根值,二级显示值
<%
count2 = 0
do while not cityRS.eof
%>
subval2[<%=count2%>] = new Array('<%=cityRS("provinceid")%>','<%=cityRS("id")%>','<%=cityRS("cityname")%>')
<%
count2 = count2 + 1
cityRS.movenext
loop
cityRS.close
%>
<%
'三级数据保存到数组
Dim count3,townRS,townSQL
set townRS=server.createobject("adodb.recordset")
townSQL="select * from sys_town"
townRS.open townSQL,conn,1,1
%>
var subval3 = new Array();
//数组结构:二级根值,三级根值,三级显示值
<%
count3 = 0
do while not townRS.eof
%>
subval3[<%=count3%>] = new Array('<%=townRS("cityid")%>','<%=townRS("ID")%>','<%=townRS("townname")%>')
<%
count3 = count3 + 1
townRS.movenext
loop
townRS.close
%>
function changeselect1(locationid)
{
document.form1.cityID.length = 0;
document.form1.cityID.options[0] = new Option('请选择城市','');
document.form1.townID.length = 0;
document.form1.townID.options[0] = new Option('请选择城区','');
for (i=0; i<subval2.length; i++)
{
if (subval2[i][0] == locationid)
{document.form1.cityID.options[document.form1.cityID.length] = new Option(subval2[i][2],subval2[i][1]);}
}
}function changeselect2(locationid)
{
document.form1.townID.length = 0;
document.form1.townID.options[0] = new Option('请选择城区','');
for (i=0; i<subval3.length; i++)
{
if (subval3[i][0] == locationid)
{document.form1.townID.options[document.form1.townID.length] = new Option(subval3[i][2],subval3[i][1]);}
}
}
//-->
</script>
<form id="form1" name="form1" method="post">
<%
Dim count1,provinceRS,provinceSQL
set provinceRS=server.createobject("adodb.recordset")
provinceSQL="select * from sys_province order by orderfield"
provinceRS.open provinceSQL,conn,1,1
%> <select name="provinceID" id="provinceID" onChange="changeselect1(this.value)">
<option value="">请选择省份</option>
<%
do while not provinceRS.eof
response.Write "<option value="&provinceRS("ID")&">"&provinceRS("provincename")&"</option>"
provinceRS.movenext
loop
provinceRS.close
set provinceRS = nothing
%>
</select>
<select name="cityID" id="cityID" onChange="changeselect2(this.value)">
<option value="">请选择城市</option>
</select>
<select name="townID" id="townID">
<option value="">请选择城区</option>
</select>
</form>
关键是修改信息的页面怎么获取数据库值来selected
或者说提交表单后的selected
var val = "<%=request("tel_people")%>";
//然后遍历select options
var sel = document.form[0].tel_people;
for(var i=0;i<sel.options;i++){
if(sel.options[i].value==val){sel.options[i].selected=true;break;}
}
)
调用就是把这个代码写到函数里面那
window.onload=function()(
var val = " <%=request("tel_people")%>";
//然后遍历select options
var sel = document.form[0].tel_people;
for(var i=0;i <sel.options;i++){
if(sel.options[i].value==val){sel.options[i].selected=true;break;}
}
)
if (aa==bb)
.....options = new Option(subval2[i][2],subval2[i][1],true,true)这样就等同于你的<%if request("tel_people")=provinceRS("tel_people") then%>selected <%end if%>效果了。