jsp中怎么实现三级联动?谁有这样的代码请告诉我一下。已经想了两天了。
我是用SQL数据库的,万分感谢!!!

解决方案 »

  1.   

    这是个javascript问题不是jsp问题
    最好是用jsp生成个xml的树,再用javascript分析xml树控制显示<xml id="menudata">
    <root>
    <country value="china" label="中国">
    <city value="bj" label="北京"/>
    </country>
    </root>
    </xml>
      

  2.   

    我在这方面是初学者。而且发现用JSP做这个三级联动好象很少。有哪位高手能帮忙解决啊
      

  3.   

    用ajax了,比直接用javascript写要方便多了。
      

  4.   

    楼上的,AJAX没学过。也不知道怎么用。能教下吗?
      

  5.   

    jsp的代码找不到了,有asp的你参考一下:表 tDateCode 字段:Dco_ID,Dco_PID,Dco_Name,Dco_Order,Dco_Re假设a.asp页面有三个下拉框:s1(国家),s2(省),s3(市地区)
    在s1,s2的OnChange()事件中分别调用javascript脚本:c1(),c2() ;
    <SCRIPT language=JavaScript>
    function c1()

       //功能:更据s1的值从数据库中读取s2的值
       var i,j

        var trade_code
    var xmlDoc = new ActiveXObject("Msxml.DOMDocument");

    trade_code=FormName.s1.value;//你选择的国家
        if(trade_code.length>0){
    xmlDoc.async = false;

    xmlDoc.load("b.asp?pid="+trade_code.toString());

    //alert(xmlDoc.xml);
    var com=xmlDoc.documentElement.childNodes[0];
    //alert(trade_code);
    j=com.childNodes.length;    
             //清空原先s2下啦框选项
       for (i=FormName.s2.length-1;i>=0;i--)
       FormName.s2.remove(i)
    //清空原先s3下啦框选项
       for (i=FormName.s3.length-1;i>=0;i--)
       FormName.s3.remove(i)

               FormName.s2.options[0]=new Option("请选择省份","");
                      //根据数据库值重新填充s2
    for (i=1;i<=j;i++)
    {
    FormName.s2.options[i]=new Option(com.childNodes[i-1].getAttribute("D"),com.childNodes[i-1].getAttribute("V"));
    }
    FormName.s2.selectedIndex=0;
    }else{
             //清空原先s3下啦框选项
       for (i=FormName.s2.length-1;i>=0;i--)
       FormName.s2.remove(i)
             //清空原先s3下啦框选项
       for (i=FormName.s3.length-1;i>=0;i--)
       FormName.s3.remove(i)

    FormName.s2.options[0]=new Option("请选择省份","");
    FormName.s2.selectedIndex=0;
    }
    }
    </script>function c2()

       //功能:更据s2的值从数据库中读取s3的值
       var i,j

        var trade_code
    var xmlDoc = new ActiveXObject("Msxml.DOMDocument");

    trade_code=FormName.s2.value;//你选择的省份
        if(trade_code.length>0){
    xmlDoc.async = false;

    xmlDoc.load("b.asp?pid="+trade_code.toString());

    //alert(xmlDoc.xml);
    var com=xmlDoc.documentElement.childNodes[0];
    //alert(trade_code);
    j=com.childNodes.length;    
             //清空原先s3下啦框选项
       for (i=FormName.s3.length-1;i>=0;i--)
       FormName.s3.remove(i)

               FormName.s3.options[0]=new Option("请选择市","");
                      //根据数据库值重新填充s2
    for (i=1;i<=j;i++)
    {
    FormName.s3.options[i]=new Option(com.childNodes[i-1].getAttribute("D"),com.childNodes[i-1].getAttribute("V"));
    }
    FormName.s3.selectedIndex=0;
    }else{
             //清空原先s3下啦框选项
       for (i=FormName.s3.length-1;i>=0;i--)
       FormName.s3.remove(i)

    FormName.s3.options[0]=new Option("请选择市","");
    FormName.s3.selectedIndex=0;
    }
    }
    </script>
    b.asp的代码描述:
    <?xml version="1.0" encoding="gb2312"?>
    <%  
      '接受参数:pid根据pid读取字类数据
      Dim pid
      pid=request("pid")
      if len(pid)=0 then pid=-1
      on Error resume next
      set rs=server.CreateObject ("ADODB.recordset")
      szSql="select Dco_ID,Dco_Name from tDateCode where Dco_PID= "&pid&" order by Dco_Order"
      rs.Open szSql,conn,1,1
      
    %>
    <U>
    <C>
    <%
    '循环将数据读出
    while not rs.EOF
    %>   
    <R V="<%=rs("Dco_ID")%>" D="<%=rs("Dco_Name")%>"></R>
    <%
    rs.MoveNext
    wend
    rs.close
    %>
    </C>
    </U>
      

  6.   

    javascript,一般都用这个的,当然通过jsp事先赋值!
      

  7.   

    http://www.blueidea.com/bbs/newsdetail.asp?id=2042256
    给你一个参考