我建了一个服务器下拉别表控件,两个上html控件select!~~~服务器控件里面有国内和国际两个选项,当我选国内的时候,两个下拉select分别显示国内的城市和航空公司!~~~选国际的时候,两个下拉select分别显示国际的城市和航空公司!~~~ 城市和航空公司都用JS创建的数据,请问如何实现啊?

解决方案 »

  1.   

    用Ajax,具体的你上网上搜下有例子
      

  2.   

    呵呵 我这几天也在做这个例子现在看到
    一是用Ajax 高手给我的例子是用Ajax的
    二是用JS+XML 但我是想要这种的 比较省资源你搜索一下 二级联动 下拉框
    很多~~~~~~
    但.....我的逻辑能力还.......
    常常头在冒烟~~~~
      

  3.   

    我写的有代码,但是出错啦!function add_option(sObj, t, s)//根据下拉选择框sObj来动态给选择框s和t添加option
    {
       var v = sObj.value;
       var obj = document.getElementById(t);
       var obj1 = document.getElementById(s);
       
       if(!v || !des_city_arr[v] || !airways_arr[v])
       {
          obj.length = 0;
          obj1.length = 0;
          add_option(t, '没有数据', 0);
          add_option(s, '没有数据', 0);
          obj.option[0].selected = true;
          obj1.option[0].selected = true;
          return false;
       }
       //添加目的城市
       if(des_city_arr[v].length)
       {
          obj.length = 0;
          for(cityid in des_city_arr[v])
          {
             add_option(t, des_city_arr[v][cityid], cityid);
          }
          obj.option[0].selected = true;
       }
       //添加航空公司
       if(airways_arr[v].length)
       {
          obj1.length = 0;
          for(airid in airways_arr[v])
          {
              add_option(s, airways_arr[v][airid], airid);
          }
          obj1.option[0].selected = true;
       }
    }//创建option,添加内容。
    function add_option(obj, text, value)
    {
       s_obj = document.getElementById(obj);
       opt_len = s_obj.length;
       newOpt = document.createElement("option");
       newOpt.text = text;
       newOpt.value = value;
       app = navigator.appName;
       if(app.indexOf("Microsoft") != -1)
       {
          s_obj.add(newOpt);
       }
       else
       {
          s_obj.add(newOpt, s_obj.options[opt_len+1]);
       }
    }
      

  4.   

    http://topic.csdn.net/t/20060407/17/4670852.html
      

  5.   

    如果城市和航班固定可以将数据写在javascript中,这样更新也快不回发而且客户体验是最好的。
      

  6.   

    js是要写死的, 还是你用AJAX吧
      

  7.   

    用JS+XML 但我是想要这种的 比较省资源 
    网上搜索下2级联动好多的
      

  8.   

    给你个代码吧简单function Menu(theform,menuid) {
    /*---------------------------------------------------------------------------*\
    * 1.变量定义                       *
    /*---------------------------------------------------------------------------*/     //定义菜单级别MenuClass,菜单长度数组MenuLenArr,
    //菜单名称数组MenuArr,下级菜单数组SubMenuArr,菜单ID数组MenuIdArr
    var MenuClass,MenuLenArr,MenuArr,SubMenuArr,MenuIdArr//定义分隔符:splitchar1,splitchar2
    var splitchar1,splitchar2//定义临时数组,子数组,数组长度,
    var arr,subarr,arrlen/*---------------------------------------------------------------------------*\
    * 2.变量赋值                       *
    /*---------------------------------------------------------------------------*/
    MenuArr=new Array()
    MenuLenArr=new Array()
    SubMenuArr=new Array()
    MenuIdArr=new Array()MenuArr[1]="辽宁|||黑龙江|||吉林|||内蒙古|||河北|||山东"; //洲名|||...
    MenuArr[2]="辽宁###大连|||辽宁###沈阳|||辽宁###鞍山|||辽宁###抚顺|||辽宁###本溪|||辽宁###丹东|||辽宁###锦州|||辽宁###营口|||辽宁###阜新|||辽宁###辽阳|||辽宁###盘锦|||辽宁###铁岭|||辽宁###朝阳|||辽宁###葫芦岛"; //洲名###国名|||...
    MenuArr[3]=<!--{eval echo "\"";}-->
    <!--{loop $hotellist $value}-->
    <!--{eval echo $value[city]."###".$value[c_name];}-->
    <!--{eval echo "|||";}-->
    <!--{/loop}-->
    <!--{eval echo "\"";}-->;
    MenuArr[4]="北京###朝阳区|||上海###徐汇区|||广州###天河区|||纽约###曼哈顿区|||华盛顿###华盛顿区|||柏林###新柏林区|||巴黎###大巴黎区|||开罗###大开罗|||悉尼###悉尼市区|||墨西哥城###墨西哥城区"; //国名###城市名|||...MenuIdArr[1]="zhou"
    MenuIdArr[2]="guo"
    MenuIdArr[3]="shi"
    MenuIdArr[4]="qu"
    MenuClass=4 //4级菜单splitchar1="|||";
    splitchar2="###";/*---------------------------------------------------------------------------*\
    * 3.生成数组                       *
    /*---------------------------------------------------------------------------*/
    for(iii=1;iii<=MenuClass;iii++)
    {
    arr=MenuArr[iii].split(splitchar1);
    len=arr.length;
    subarr=new Array()
    for (i=0;i<len;i++)
    {
    subarr[i]=arr[i].split(splitchar2);
    }
    len=subarr.length;
    SubMenuArr[iii]=subarr 
    MenuLenArr[iii]=len
    }//============更改下级菜单======================
    var self,submenu,thislen,thisarr  
    //self本级菜单
    //submenu子菜单
    //theform:所在表单对象[type:object]
    //menuid:本级菜单级别ID,如1级菜单则为1
     self=eval("document."+theform.name+"."+MenuIdArr[menuid])  
     submenu=eval("document."+theform.name+"."+MenuIdArr[menuid+1])  
     thislen=MenuLenArr[menuid+1]
     thisarr=SubMenuArr[menuid+1]
     submenu.length=0
     submenu.options.add(new Option( "-----请选择-----","")); 
      for (i=0;i<thislen;i++) 
      { 
      if (thisarr[i][0] == self.value) 
       {
        submenu.options.add(new Option(thisarr[i][1], thisarr[i][1])); 
      } 
      } 
      submenu.options[0].selected=true//============更改下级以下菜单==============
    var kkk
    for(kkk=menuid+2;kkk<=MenuClass;kkk++)
     {    
     submenu=eval("document."+theform.name+"."+MenuIdArr[kkk])  
     submenu.length=0
     submenu.options.add(new Option( "-----请选择-----",""));   
     submenu.options[0].selected=true
     }
    }