您的位置:

省市县三级联动的实现

一、前言

在网页的表单中,省市县三级联动是非常常见的需求。用户选择省份后,自动加载该省份的市列表;用户选择市后,自动加载该市的县列表。本文将介绍如何使用HTML、CSS和JavaScript实现省市县三级联动功能。

二、HTML部分

首先,我们需要在HTML文件中创建三个下拉框,分别对应省、市、县:

<select id="province">
    <option value="">请选择省份</option>
</select>

<select id="city">
    <option value="">请选择市</option>
</select>

<select id="county">
    <option value="">请选择县区</option>
</select>

需要注意的是,初始时下拉框中应该显示“请选择省份”、“请选择市”和“请选择县区”,因此我们在option标签中的value属性中留空,这样用户在未进行选择时提交的值也将为空。

三、CSS部分

为了美观,我们可以在CSS中为三个下拉框添加一些样式。例如:

select {
    padding: 6px;
    font-size: 16px;
    border-radius: 5px;
    border: 1px solid #ccc;
}

option {
    font-size: 14px;
}

这段代码使得下拉框有较为明显的边框,选项字体较小。

四、JavaScript部分

接下来是最重要的部分,我们需要使用JavaScript实现省市县三级联动。

首先,我们需要定义省、市、县三个数组,用于存储相关信息。例如:

var provinces = [
    {name: '北京', cities: ['北京市']},
    {name: '上海', cities: ['上海市']},
    {name: '河北省', cities: ['石家庄市', '唐山市', '邯郸市', '秦皇岛市', '保定市', '张家口市']},
    {name: '江苏省', cities: ['南京市', '苏州市', '无锡市', '常州市', '扬州市']}
];

var cities = [
    {name: '北京市', counties: ['东城区', '西城区', '朝阳区', '海淀区', '丰台区']},
    {name: '上海市', counties: ['黄浦区', '徐汇区', '长宁区', '静安区', '普陀区']},
    {name: '石家庄市', counties: ['长安区', '桥西区', '新华区', '裕华区', '井陉矿区']},
    {name: '唐山市', counties: ['路北区', '路南区', '古冶区', '开平区', '曹妃甸区']},
    {name: '邯郸市', counties: ['邯山区', '丛台区', '复兴区', '峰峰矿区', '肥乡区']},
    {name: '南京市', counties: ['玄武区', '秦淮区', '鼓楼区', '建邺区', '雨花台区']},
    {name: '苏州市', counties: ['姑苏区', '虎丘区', '吴中区', '相城区', '吴江区']}
];

var counties = [
    {name: '东城区'},
    {name: '西城区'},
    {name: '朝阳区'},
    {name: '海淀区'},
    {name: '丰台区'},
    {name: '黄浦区'},
    {name: '徐汇区'},
    {name: '长宁区'},
    {name: '静安区'},
    {name: '普陀区'},
    {name: '长安区'},
    {name: '桥西区'},
    {name: '新华区'},
    {name: '裕华区'},
    {name: '井陉矿区'},
    {name: '路北区'},
    {name: '路南区'},
    {name: '古冶区'},
    {name: '开平区'},
    {name: '曹妃甸区'},
    {name: '邯山区'},
    {name: '丛台区'},
    {name: '复兴区'},
    {name: '峰峰矿区'},
    {name: '肥乡区'},
    {name: '玄武区'},
    {name: '秦淮区'},
    {name: '鼓楼区'},
    {name: '建邺区'},
    {name: '雨花台区'},
    {name: '姑苏区'},
    {name: '虎丘区'},
    {name: '吴中区'},
    {name: '相城区'},
    {name: '吴江区'}
];

然后,我们需要在页面加载完成时向省份下拉框中动态添加选项。实现方法如下:

// 动态加载省份列表
function loadProvinces() {
    var selectProvince = document.getElementById('province');
    for (var i = 0; i < provinces.length; i++) {
        var option = document.createElement('option');
        option.value = provinces[i].name;
        option.text = provinces[i].name;
        selectProvince.add(option);
    }
}
loadProvinces();

该函数将循环遍历provinces数组,并将每个省份的名称动态添加到省份下拉框中。同时,为了便于后续的操作,我们需要在省份的option标签中添加一个自定义属性,用于存放该省份的市列表,例如:

option.cities = provinces[i].cities;

接下来,我们需要为省份下拉框绑定change事件,当用户选择某个省份时,动态加载该省份的市列表。实现方法如下:

var selectProvince = document.getElementById('province');
var selectCity = document.getElementById('city');
var selectCounty = document.getElementById('county');

// 省份下拉框选择事件
selectProvince.onchange = function() {
    // 先清除市和县区下拉框的选项
    selectCity.options.length = 1;
    selectCounty.options.length = 1;
    // 获取当前选中的省份名称
    var provinceName = this.options[this.selectedIndex].value;
    // 查找该省份的市列表
    for (var i = 0; i < provinces.length; i++) {
        if (provinces[i].name === provinceName) {
            var cities = provinces[i].cities;
            // 动态加载市列表
            for (var j = 0; j < cities.length; j++) {
                var option = document.createElement('option');
                option.value = cities[j];
                option.text = cities[j];
                selectCity.add(option);
            }
            // 在省份的option标签中添加一个自定义属性,用于存放该省份的市列表
            selectProvince.options[this.selectedIndex].cities = cities;
            break;
        }
    }
}

该函数在省份下拉框change事件触发时,先清除市和县区下拉框中原有的选项。然后获取用户选择的省份名称,并查找该省份的市列表。将市列表动态添加到市下拉框中,并在省份的option标签中添加一个自定义属性,用于存放该省份的市列表。

接下来,我们需要为市下拉框绑定change事件,当用户选择某个市时,动态加载该市的县区列表。实现方法如下:

// 市下拉框选择事件
selectCity.onchange = function() {
    // 先清除县区下拉框的选项
    selectCounty.options.length = 1;
    // 获取当前选中的市名称
    var cityName = this.options[this.selectedIndex].value;
    // 查找该市的县区列表
    for (var i = 0; i < cities.length; i++) {
        if (cities[i].name === cityName) {
            var counties = cities[i].counties;
            // 动态加载县区列表
            for (var j = 0; j < counties.length; j++) {
                var option = document.createElement('option');
                option.value = counties[j];
                option.text = counties[j];
                selectCounty.add(option);
            }
            break;
        }
    }
}

该函数在市下拉框change事件触发时,先清除县区下拉框中原有的选项。然后获取用户选择的市名称,并查找该市的县区列表。将县区列表动态添加到县区下拉框中。

五、Demo演示

下面是完整的代码示例。复制代码并保存为.html文件,用浏览器打开即可看到实际效果。



    省市县三级联动
    
  
    


    

    

    

    


省市县三级联动的实现

2023-05-20
省市区三级联动的js文件,js省市县三级联动

本文目录一览:...

2023-12-08
省市区多级联动js代码(html地区三级联动)

本文目录一览: 1、省市县三级联动菜单,JS全国省市县(区)联动,怎样连接到数据库啊? 2、省市区三级联动下拉菜单应该怎么写 3、javascript实现二级联动,比如连个下拉列表,一个选择省份,另一

2023-12-08
ElementUI省市区三级联动详解

2023-05-22
js省份城市二级联动源码(ajax省市区三级联动代码)

本文目录一览: 1、bootstrap-select.js 怎么联动改变,例如:省份,城市二级联动。 2、JS实现一级地区和二级地区联动!求高手改代码!!!万分感谢!!! 3、javascript实现

2023-12-08
微信小程序省市区三级联动

2023-05-19
mysql省市县数据库(全国省市县数据库)

2022-11-15
大陆省市区三级联动数据库 - 详细地址选择

2023-05-17
mysql省市县区数据库表设计(省市区数据库设计几张表好)

2022-11-08
layui-select插件如何在网页中实现多级联动选择

2023-05-16
省市区县乡镇村mysql数据库,中国省市区县乡镇村信息

2022-11-23
跪求js城市四级联动代码,js城市二级联动

本文目录一览: 1、求四级联动代码(ASP+JS) 2、javascript如何实现4级联动 3、根据数据库表格当中的数据怎么设置四级联动 js 求四级联动代码(ASP+JS) !DOCTYPE HT

2023-12-08
js实现二级联动简单实例(js下拉框二级联动)

本文目录一览: 1、怎么用angularJS来实现下图的二级联动啦 2、javascript实现二级联动,比如连个下拉列表,一个选择省份,另一个自动出现相应城市 3、求js二级联动value与显示内容

2023-12-08
js四级联动完整代码,JS二级联动

本文目录一览: 1、javascript如何实现4级联动 2、求用ASP.Net实现一个四级联动的下拉列表 3、求四级联动代码(ASP+JS) 4、求一个JS jquery地区选择的四级联动插件,1.

2023-12-08
省市级联所需数据库mysql版(省市区级联sql)

2022-11-16
省市区代码js(省市区代码划分标准)

本文目录一览: 1、怎样用js实现省市联动,数据是从数据库读取? 谢谢了 2、JavaScript实现省市县级联 3、如何用js实现省市区之间的三级联动 4、用JS实现省市下拉框怎么做? 5、省市区下

2023-12-08
Layui二级联动-详解

2023-05-16
省市区级联表mysql,省市区级联查询

2022-11-29
java三级级联和(java三级联动实现)

2022-11-10
省份城市数据库mysql(省市区数据库)

2022-11-15