如何实现简单的三级联动效果? 数据时从表中读取的。兼容性要好的,我目前实现的这个好多浏览器不兼容。

解决方案 »

  1.   

    <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" action="">
    <%
       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>回去自己改改就OK了
      

  2.   


    楼上的篡位了,这可是jsp的地盘,容不得asp瞎胡闹
      

  3.   

    LZ你题意不清你没有说是在JSP还是EXT还是asp中实现。
      

  4.   

    联动其实也没什么首先你定义三个方法 分给三个select然后再方法中用AJAX 或 DWR进行在后台取数据 然后动态填充数据