地址联动下拉框实现

<head>
  <meta charset="UTF-8">
  <title>地址联动下拉框实现</title>
  <link rel="stylesheet" type="text/css" href="reset.css">
  <link rel="stylesheet" type="text/css" href="bootstrap.min.css">
  <script type="text/javascript" src="citys.js"></script>
</head>
// head部分reset清除不同浏览器的差异,用bootstrap主要是因为下拉框太丑,大家也可以自制下拉框(如果需要兼容ie低版本的话)citys.js储存的是地址,省市县。下载地址是这个https://passport.baidu.com/js/sitedata_bas.js
<div class="container">
  <h2 class="header">地址联动下拉框</h2>
  <div class="form-group" id="main">
    <select class="form-control" style="width: 20%;float: left;">
    </select>
    <select class="form-control" style="width: 20%;float: left;">
    </select>
    <select class="form-control" style="width: 20%;float: left;">
    </select>
</div>
</div>
//body结构
//下面主讲一下思路,首先第一个下拉框要添加省的内容,当这个下拉框onchange时候第二个下拉框就跟着变,同理第二个下拉框onchange的时候第三一个就跟着变了。
<script type="text/javascript">
  window.onload = function (){
    var main = document.getElementById("main");
    var selects = main.getElementsByTagName("select");
    //注 arrCity 是citys.js中的 全国地址json数据
    //初始化省份,为第一个下拉框添加内容
    //ie8以下不兼容for in 可以采用for 循环
    //写之前先研究json的结构
    for( pro in arrCity){
      createOption(selects[0],arrCity[pro].name)
    }
    //创建 option的函数
     function createOption(parent,innerHTML){
        var option = document.createElement("option");
        option.innerHTML = innerHTML
        parent.appendChild(option);
     }
    //初始化完成、联动开始
    //第一个下拉框改变的时候
    var one = 0 //初始化省的选择位置
    selects[0].onchange = function (){
      //清空第二个和第三个下拉框
      selects[1].innerHTML = selects[2].innerHTML = ‘‘;
      for ( pro in arrCity){
        //判断选择的是哪个省份
        if (this.value == arrCity[pro].name) {
          // 省份变动
          one = pro;
          // 省份下面有一个sub数组是盛放市的
          for(city in arrCity[pro].sub){
            //添加市
            createOption(selects[1],arrCity[pro].sub[city].name);
          }
        }
      }
     }
    //第二个下拉框改变的时候
    selects[1].onchange = function (){
      //只有第三个下拉菜单清空
      selects[2].innerHTML = ‘‘;
      //判断选择的那个省 one已经帮我们记录了
      //判断哪个市
      for ( city in arrCity[one].sub){
        if (this.value == arrCity[one].sub[city].name) {
          // 市份下面有一个sub数组是盛放县的
          for( county in arrCity[one].sub[city].sub){
            //添加县
            createOption(selects[2],arrCity[one].sub[city].sub[county].name);
          }
        }
      }
    }
  }
</script>
//对于我的难点就json数据结构的处理,总的来说就是先看arrcity的结构在做处理,在实际操作的过程,程序返回值也是这个样子的,都需要我们进行加工还原成html结构。
//最后的结构是这个样子的

这是本人第一篇博客,本人从小不擅长笔记,写的比较嘈杂,欢迎指正

时间: 2024-10-26 06:16:32

地址联动下拉框实现的相关文章

SharePoint 2013 使用查阅项实现联动下拉框

SharePoint列表使用中,经常会用到下拉框,而有些特殊的需求,会用到联动的下拉框,在SharePoint中默认没有这样的字段,所以如果实现,我们需要自己想办法. 这里,我们介绍如何使用JQuery+JavaScript客户端对象模型实现,下面让我简单介绍下实现的全过程. 1.创建基础列表CityList,保存的是城市名称,使用默认字段Title: 2.列表CityList的所有栏,我把Title字段的名称改为了City Name,如下图: 3.创建基础列表AreaList,用于保存所有区和

jq实现简单的二级联动下拉框

1 效果图 2 html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compati

jquery+ligerform三级联动下拉框

如下为ligerform里的三级联动下拉框: var formData=[ {display:"县区",name:"QY",newline:true,labelWidth:100,width:220,space:50,type:"select",group:"区域信息",groupicon:"@Url.Content("~/Content/icons/32X32/communication.gif"

JS年月日三级联动下拉框日期选择代码

原博客网址: http://www.cnblogs.com/gdcgy/p/5467742.html 由于工作中涉及到生日编辑资料编辑,年月日用上面网址案例:bug提示: 编辑生日栏的[年]或者[月],之前保存的具体的[日]就不显示啦,产品说不管编辑哪个数据,其他数据不变: 然后自己改了一下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh

Web 1三级联动 下拉框 2添加修改删除 弹框

Web  三级联动 下拉框 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { private MyDBDataContext _Context = new MyDBD

新生入学--JS省市二级联动下拉框

在新生入学过程中,会添加自己的个人信息,如生源地或者家庭住址等.像这样的信息如果让学生自己输入可能会出现不规范的现象,我们做统计的时候很不方便,所以设计成下拉框选择的形式,这样存进数据库中的数据就都是规范的了. 籍贯的选择涉及到我们全国的34个省市等,而且选择了每个省之后要相应的知道这个省的市到县,这就用到了下拉框的联动.以前在ASP.NET中是用过的,当时是两个控件的联动从数据库中直接查数据,在JS中也是同样的道理. 联动效果如下图: 接着说说代码,用到了JavaScript和html以及一些

省市区三级联动下拉框效果分析

<select id="selProvince"> <option>--请选择--</option> </select> <select id="selCity"> <option>--请选择--</option> </select> <select id="selCountry"> <option>--请选择--</op

Android实现三级联动下拉框 下拉列表spinner的实例

主要实现办法:动态加载各级下拉值的适配器 在监听本级下拉框,当本级下拉框的选中值改变时,随之修改下级的适配器的绑定值              XML布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_

jquery+html三级联动下拉框及详情页面加载时的select初始化问题

html写的三个下拉框,如下: <select name="ddlQYWZYJ" id="ddl_QYWZYJ" class="fieldsel" style="width: 200px;font-size:12px" ></select> <select name="ddlQYWZEJ" id="ddl_QYWZEJ" class="fields