现在有一个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%>
这个代码加进去,在上面的处理部分中应该怎么去加呢?

解决方案 »

  1.   

    完整代码如下:<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>         <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>
      

  2.   

    在客户端代码中处理就可以了
    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;}
       }
    )
      

  3.   

    我在js下面加上了你写的代码还是不行<%if request("tel_people")<>"" then%>
    <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%>
      

  4.   

    如果可以调试的话,建议lz先看看下面这句话能否执行到
    if(sel.options[i].value==val){sel.options[i].selected=true;break;}
      

  5.   

    <select name="tel_people" id="tel_people" onChange="document.form1.submit();">你这个红色的代码是干啥的??
      

  6.   

    <%if CInt(request("case_ID"))=provinceRS("case_ID") then%>selected<%end if%>主要看你红色部分有没有值了!
    要是没值肯定达不到你想要的效果了!
      

  7.   

    <select name="tel_people" id="tel_people" onChange="document.form1.submit();"> 
    在第二个列表选择后,需要提交表单
    <%if CInt(request("case_ID"))=provinceRS("case_ID") then%>selected <%end if%> 
    这个能选择到,关键是提交后第二个列表tel_people无法获取到已选择的值
      

  8.   

    binbin,我觉得是不是该在
    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的处理
    但是楼上有位仁兄的代码我用了,不行诶
      

  9.   

    <script>
    <!--
    <%
    '二级数据保存到数组
    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> 上面这段代码是在修改页面的代码
    红色部分为数据库中的值。
    我想这个和你想要的结果差不多吧!!
      

  10.   

    binbin你楼上的代码
    在二级联动中,测试成功了
    但是同样的代码,放到三级中去,确失败了
    为什么呢?
      

  11.   

    三级联动的你得改改<script>
    <!--
    <%
    '二级数据保存到数组
    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>
      

  12.   

    上面的代码之前你有发过,我就是按照这个写的
    关键是修改信息的页面怎么获取数据库值来selected
    或者说提交表单后的selected
      

  13.   

    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;}
       }
    )
    调用就是把这个代码写到函数里面那
      

  14.   

    我试过的,但是这个代码不好使
    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;} 
      } 
      

  15.   

    具体的我不写了,我想你大概需要的是这个:在JS里
    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%>效果了。
      

  16.   

    document.form1.tel_people.addChildNode( new Option(subval2[i][2],subval2[i][1]))