首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

三级城市联动js代码

三级城市联动通常是指在前端页面上实现省、市、区三级下拉菜单的联动效果。这种功能常用于用户注册、地址填写等场景,以便用户能够方便地选择自己的地理位置。下面是一个简单的三级城市联动的JavaScript代码示例,使用了原生JavaScript和HTML来实现。

HTML部分

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>三级城市联动</title>
</head>
<body>
    <select id="province">
        <option value="">请选择省份</option>
    </select>
    <select id="city">
        <option value="">请选择城市</option>
    </select>
    <select id="district">
        <option value="">请选择区县</option>
    </select>

<script src="data.js"></script>
<script src="main.js"></script>
</body>
</html>

JavaScript部分(main.js)

代码语言:txt
复制
document.addEventListener('DOMContentLoaded', function() {
    const provinceSelect = document.getElementById('province');
    const citySelect = document.getElementById('city');
    const districtSelect = document.getElementById('district');

    // 初始化省份数据
    for (const province of provinces) {
        const option = document.createElement('option');
        option.value = province.code;
        option.textContent = province.name;
        provinceSelect.appendChild(option);
    }

    // 省份改变时更新城市数据
    provinceSelect.addEventListener('change', function() {
        const selectedProvinceCode = this.value;
        citySelect.innerHTML = '<option value="">请选择城市</option>';
        districtSelect.innerHTML = '<option value="">请选择区县</option>';

        if (selectedProvinceCode) {
            const cities = provinces.find(p => p.code === selectedProvinceCode).cities;
            for (const city of cities) {
                const option = document.createElement('option');
                option.value = city.code;
                option.textContent = city.name;
                citySelect.appendChild(option);
            }
        }
    });

    // 城市改变时更新区县数据
    citySelect.addEventListener('change', function() {
        const selectedProvinceCode = provinceSelect.value;
        const selectedCityCode = this.value;
        districtSelect.innerHTML = '<option value="">请选择区县</option>';

        if (selectedCityCode) {
            const districts = provinces.find(p => p.code === selectedProvinceCode).cities.find(c => c.code === selectedCityCode).districts;
            for (const district of districts) {
                const option = document.createElement('option');
                option.value = district.code;
                option.textContent = district.name;
                districtSelect.appendChild(option);
            }
        }
    });
});

数据部分(data.js)

代码语言:txt
复制
const provinces = [
    {
        code: '110000',
        name: '北京市',
        cities: [
            {
                code: '110100',
                name: '北京市',
                districts: [
                    { code: '110101', name: '东城区' },
                    { code: '110102', name: '西城区' },
                    // ...其他区县
                ]
            }
        ]
    },
    // ...其他省份
];

基础概念

  • 联动下拉菜单:指多个下拉菜单之间存在依赖关系,选择一个菜单的值会影响其他菜单的显示内容。
  • 数据驱动:通过预定义的数据结构来控制下拉菜单的内容,使得页面动态响应用户的操作。

优势

  • 用户体验:简化用户操作流程,提高填写表单的效率。
  • 数据准确性:通过程序控制下拉菜单内容,减少用户输入错误。
  • 易于维护:数据和逻辑分离,便于后期更新和维护。

应用场景

  • 用户注册:要求用户填写详细地址时使用。
  • 订单管理:在物流配送环节,需要精确到区县的地址选择。
  • 数据分析:在统计分析中,根据地区划分数据进行展示。

可能遇到的问题及解决方法

  • 数据加载延迟:如果数据量很大,可能会导致页面加载缓慢。可以通过分批加载或使用懒加载技术来解决。
  • 数据同步问题:确保三级菜单的数据同步更新,避免出现选择不一致的情况。可以通过事件监听和数据绑定来实现。
  • 兼容性问题:不同浏览器可能对JavaScript的支持程度不同,需要进行充分的测试和兼容性处理。

以上代码和解释提供了一个基本的三级城市联动实现框架,具体应用中可能需要根据实际需求进行调整和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

城市三级联动功能实现

blog.csdn.net/u011415782/article/details/74586762 背景: 最近在进行商品购买流程的开发,需要用户填写自己的收货地址,为了保证地址的准确性,需要使用到全国城市的三级联动功能...一.html 触发点击事件,直接获取js中的城市数据 首先,这个功能在实现上最简单,本人参考了度娘搜索的纯 js 实现网页,需要提醒的源代码适用的 jQuery 版本已经过低,建议可参考其网页下面的网友回复...我将代码做了处理整合到 ThinkPHP 框架中,下面介绍一下实现效果: 1.正确引用 area.js 文件 ?...4.数据处理 待三级城市信息显示完全可以使用ajax 异步提交到后台进行数据的插入即可。...,此处提供之前所写的类似功能数据库三级分类,敬请指摘 三.第三方城市接口 网上看到一篇文章—中国城市三级联动数据获取方法现,值得推荐…

5.1K30
  • 使用JQuery和bootstrap-select实现世界城市的三级联动(中英互译)

    使用JQuery和bootstrap-select实现世界城市的三级联动(中英互译) 我们公司是做外贸电商的,需要一个世界城市的三级联动,在网上找好久发现都没有合适的轮子,只能自己写一个 使用该轮子需要引用...bootstrap-select 使用该轮子需要引用JQuery 使用该轮子需要引入世界城市的json数据 var worldcountry = Widget.extend({ init:...res); self.addPlanAaddress() }, }); }, /** * @description:初始世界城市的三级联动...,使用事件委托绑定到各级事件,通过选择不同国家关联不同的城市和街道 * @param:res * */ initOption: function (self, res)...${province}/${stree}`) }); }, /** * @description :选择国家时候 * @param res :全世界国家城市数据

    3.4K20

    DEDECMS织梦解决联动类别地区调用不显示第三级城市的方法

    这篇文章主要为大家详细介绍了织梦模板联动类别地区调用不显示第三级城市的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。        ...这个问题是一用户自己在做开发时候发现的,首先我们先弄清楚织梦联动类别地区调用不显示第三级城市的原因: 1、附加表dede_addoninfos或者你的其他表中的字段nativeplace数据类型为int...型,无法保存第三级城市对应的的evalue值(比如:东山区  对应的  10001.001) 2、枚举表dede_sys_enum中的第三级城市对应evalue值错误(比如:东山区 10001.1 应该为...东山区 10001.001) 织梦联动类别地区调用不显示第三级城市的解决方法: 1、修改附加表dede_addoninfos或者你的其他表中的字段nativeplace把它的数据类型为char型 后台...以上就是织梦模板联动类别地区调用不显示第三级城市的解决方法的全部内容,希望对大家的学习和解决疑问有所帮助

    1.5K00

    android wheelview实现三级城市选择

    很早之前看淘宝就有了ios那种的城市选择控件,当时也看到网友有分享,不过那个写的很烂,后来(大概是去年吧),我们公司有这么一个项目,当时用的还是网上比较流行的那个黑框的那个,感觉特别的丑,然后我在那个开源的...接下来说下我的思路:网络请求-数据返回-设置数据-数据填充控件 接下来直接按上面的流程直接上代码: 网络请求我用的本地的json数据 ?...int oldValue, int newValue) { if (wheel == provinceWheel) { updateCitiy();//省份改变后城市和地区联动...} else if (wheel == cityWheel) { updateDistrict();//城市改变后地区联动 } else if...data.City, data.Area); } } } 好了,就写到这里了,有需要的请加我们的群:278792776或者188716429 最后附上代码下载地址

    2.3K60
    领券