首页 > web前端 > js教程 > 正文

javascript省市区三级联动下拉框菜单实例演示_javascript技巧

php中文网
发布: 2016-05-16 15:29:07
原创
1719人浏览过

本文实例讲述了javascript实现省市区三级联动下拉框菜单代码,像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能,分享给大家供大家参考。具体如下:
运行效果截图如下:

具体代码如下:

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>三级联动测试</title>
  <script src="jquery-2.1.4.min.js"></script>
  <script type="text/javascript">
    //用来获得option元素中selected属性为true的元素的id
    function Get_Selected_Id(place){
      var pro = document.getElementById(place);
      var Selected_Id = pro.options[pro.selectedIndex].id;
      return Selected_Id;     //返回selected属性为true的元素的id
    }
    //改变下一个级联的option元素的内容,即加载市或县
    function Get_Next_Place(This_Place_ID,Action){
      var Selected_Id = Get_Selected_Id(This_Place_ID);  //Selected_Id用来记录当前被选中的省或市的ID
      if(Action=='Get_city')              //从而可以在下一个级联中加载相应的市或县
        Add_city(Selected_Id);
      else if(Action=='Get_country')
        Add_country(Selected_Id);
    }
    //用来存储省市区的数据结构
    var Place_dict = {
      "GuangDong":{
              "GuangZhou":["PanYu","HuangPu","TianHe"],
              "QingYuan":["QingCheng","YingDe","LianShan"],
              "FoShan":["NanHai","ShunDe","SanShui"]
              },
      "ShanDong":{
              "JiNan":["LiXia","ShiZhong","TianQiao"],
              "QingDao":["ShiNan","HuangDao","JiaoZhou"]
              },
      "HuNan":{
              "ChangSha":["KaiFu","YuHua","WangCheng"],
              "ChenZhou":["BeiHu","SuXian","YongXian"]
            }
    };
    //加载城市选项
    function Add_city(Province_Selected_Id){
      $("#city").empty();
      $("#city").append("<option>City</option>");
      $("#country").empty();
      $("#country").append("<option>Country</option>");
      //上面的两次清空与两次添加是为了保持级联的一致性
      var province_dict = Place_dict[Province_Selected_Id];  //获得一个省的字典
      for(city in province_dict){   //取得省的字典中的城市
        //添加内容的同时在option标签中添加对应的城市ID
        var text = "<option"+" id='"+city+"'>"+city+"</option>";
        $("#city").append(text);
        console.log(text); //用来观察生成的text数据
      }
    }
    //加载县区选项
    function Add_country(City_Selected_Id){
      $("#country").empty();
      $("#country").append("<option>Country</option>");
      //上面的清空与添加是为了保持级联的一致性
      var Province_Selected_ID = Get_Selected_Id("province");   //获得被选中省的ID,从而方便在字典中加载数据
      var country_list = Place_dict[Province_Selected_ID][City_Selected_Id]; //获得城市列表
      for(index in country_list){
        ////添加内容的同时在option标签中添加对应的县区ID
        var text = "<option"+" id=\'"+country_list[index]+"\'>"+country_list[index]+"</option>";
        $("#country").append(text);
        console.log(text); //用来观察生成的text数据
      }
    }
 
  </script>
</head>
<body>
  <p>您的收货地址:</p>
  <select id="province" onchange="Get_Next_Place('province','Get_city')">
    <option id="Not_data1">Province</option>
    <option id="GuangDong" value="GuangDong">GuangDong</option>
    <option id="ShanDong" value="ShanDong">ShanDong</option>
    <option id="HuNan" value="HuNan">HuNan</option>
  </select>
  <select id="city" onchange="Get_Next_Place('city','Get_country')">
    <option id="Not_data2">City</option>
  </select>
  <select id="country">
    <option id="Not_data3">Country</option>
  </select>
  <br/>
</body>
</html>
登录后复制

这个实例就是类似在淘宝购物时填写收货地址,实现省市县的三级联动,希望大家可以应用到自己的作品中,学以致用。

Superflow Rewrite
Superflow Rewrite

AI辅助高效网站设计、协作、注释工具,迭代和发布网站的最快方式

Superflow Rewrite 58
查看详情 Superflow Rewrite
相关标签:
java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号