vue实现省市区三级联动地址选择组件(附address文件)

44 篇文章 2 订阅
订阅专栏

 考虑到有很多小伙伴需要这个东西,我把 address.json 文件放在这里啦,需要自取哦!

链接:https://pan.baidu.com/s/1iuLf1QfE55ZulIeF5Ch9dQ?pwd=0710 
提取码:0710 

昨天收到一个新的需求,需要选择地址,因此就要做一个省市区三级联动的组件来使用,在网上找了一些资源,然后进行了尝试,没想到就这么成功了!要记录一下方便后续使用。

效果如下:

 下面就记录一下代码叭!

一、 封装vue组件

<!-- 地址选择 & 省市区三级联动 -->
<template>
  <el-form ref="form" :model="form" label-width="120px">
    <el-row>
      <el-select v-model="form.province" placeholder="请选择省" @change="changePro">
        <el-option v-for="item in addressData" :key="item.code" :label="item.name" :value="item.name">
        </el-option>
      </el-select>
      <el-select v-model="form.city" placeholder="请选择市" @change="changeCity">
        <el-option v-for="item in cityData" :key="item.code" :label="item.name" :value="item.name">
        </el-option>
      </el-select>
      <el-select v-model="form.district" placeholder="请选择区" @change="changeArea">
        <el-option v-for="item in areaData" :key="item.code" :label="item.name" :value="item.name">
        </el-option>
      </el-select>
      <el-input placeholder="详细地址" v-model="form.detail" style="width:200px;" clearable></el-input>
    </el-row>
    <!-- <h3>测试当前选中地址:{{result}}</h3> -->
  </el-form>
</template>
 
<script>
import address from "@/utils/address/address.json"; //全国省市区街道数据
export default {
  data() {
    return {
      //  省数据
      addressData: [],
      //  市数据
      cityData: [],
      // 区数据
      areaData: [],
    };
  },
  props: {
    // 街道数据
    form: {
      province: "",
      // 市
      city: "",
      // 区
      district: "",
      //详细地址
      detail: "",
    }
  },
  created() {
    // 省份数据初始化
    this.addressData = address;
    // console.log("this.form",this.form)

    if (this.form.province != "") {
      let cityData = this.addressData.filter(item => item.name == this.form.province)
      if (cityData.length) {
        this.cityData = cityData[0].children

        let areaData = this.cityData.filter(item => item.name == this.form.city)
        if (areaData.length) {
          this.areaData = areaData[0].children
        }
      }
    }
  },
  computed: {
    //选择结果
    result() {
      if (!this.form.district) {
        return ''
      } else if (this.form.district && this.form.detail) {
        return '' + this.form.province + "," + this.form.city + "," + this.form.district + "," + this.form.detail
      } else {
        return '' + this.form.province + "," + this.form.city + "," + this.form.district
      }
    }
  },
  methods: {
    reset() {
      this.form = {
        // 省
        province: "",
        // 市
        city: "",
        // 区
        district: "",
        //详细地址
        detail: "",
      }
    },
    // 省份更改
    changePro(e) {
      // 从省中过滤出市的数据
      this.cityData = this.addressData.filter((item) => {
        return item.name == e;
      })[0].children;
      // 省发生改变的时候 清空输入框市区街道的内容

      this.form.district = "";
      this.form.city = this.cityData[0].name;
      // 省发生更改时 该表空区街道数据的内容
      this.areaData = this.cityData[0].children;
      this.form.district = this.areaData[0].name
    },
    // 市更改
    changeCity(e) {
      // 获取到区的数据
      this.areaData = this.cityData.filter(
        (item) => item.name == e
      )[0].children;
      // 清空数据后面对应数组的数据
      this.form.district = this.areaData[0].name;
    },
    // 区更改
    changeArea(e) {
      let temp = this.areaData.filter((item) => item.name == e);
      // 获取到区的code码
      this.form.regionalNumber = temp[0].code;
      // 获取到街道的数据
      this.jdData = this.areaData.filter((item) => item.name == e)[0].children;
    },
  },
};
</script>

<style lang="scss" rel="stylesheet/scss" scoped>
.el-row {
  display: inline;
}

.el-row {
  display: inline-flex;
  flex: auto;

  .el-select {
    margin: 0 20px 0 0;
    width: 122px;
  }
}
</style>

二、在页面中引用

<el-form-item label="联系地址" prop="address" v-model="ruleForm.address">
    <checkAddress ref="address" v-model="ruleForm.address" :form="ruleForm.address" />
</el-form-item>
    data() {
        var validatePass = (rule, value, callback) => {
            
            if (this.ruleForm.address.province == '' || this.ruleForm.address.detail == '') {
                callback(new Error('请输入完整地址'));
            }
            callback();
        };
        return {
            supplierList: [],
  
            direction: 'btt',
            ifCreate: false,
            ruleForm: {
                address: {
                    // 省
                    province: "",
                    // 市
                    city: "",
                    // 区
                    district: "",
                    //详细地址
                    detail: "",
                }
            },
            rules: {
                address: [
                    { required: true ,validator: validatePass, trigger: 'blur' },
                ]
            }
        }
    },
  watch: {
    ruleForm: {
      // deep:true,
      handler() {
        this.ruleForm.address = this.$refs.address.form
        console.log(this.ruleForm.address)
      }
    }
  },

三、去网上找个Address.json文件放进去就好了

后面因为需要动态绑定,以及处理回显问题,就需要进行一些其它的处理:​​​​​​

解决elementui 的省市区级联选择器数据不回显问题_ele地区联动插件回写-CSDN博客文章浏览阅读5.2k次,点赞8次,收藏25次。上周写了一个省市区三级联动的地址选择组件,今天测试发现了一个大问题,那就是我可以正常提交地址是没错,可是当我后端返回了数据,我要点击编辑的时候,它并不会自动就给我绑定上去。就这样愉快地解决问题啦!从此点击编辑,相对应的地址数据会回显。vue实现省市区三级联动地址选择组件。_ele地区联动插件回写https://blog.csdn.net/Vivien_CC/article/details/127798566

考虑到有很多小伙伴需要这个东西,我把address文件放在这里啦,需要自取哦!

链接:https://pan.baidu.com/s/1iuLf1QfE55ZulIeF5Ch9dQ?pwd=0710 
提取码:0710 

uniapp省市区3级联动组件
记录本人工作中遇到的问题、经验总结以及分享。
06-30 1802
省市区json数据,请返回顶部下载。
vue实现省市区三级联动(V-Distpicker插件)
liuzaixi的博客
07-25 2357
使用 npm 安装: npm install v-distpicker --save 注册全局组件 import VDistpicker from 'v-distpicker'; Vue.component('v-distpicker', VDistpicker); 注册组件 import VDistpicker from 'v-distpicker' export default { components: { VDistpicker }} 基础 <v-distpick
vue省市区三级联动选择器
最新发布
m0_67475286的博客
09-10 598
3. 使用 会返回选中省市区的code组成的数组。1. 引入省市区的json文件
基于vue2的省市区三级联动组件
08-09
基于vue2的省市区三级联动组件
vue实现三级省市区三级联动
m0_37908257的博客
10-24 1714
【代码】vue实现三级省市区三级联动
基于Vue省市区三级联动插件
weixin_30591551的博客
04-24 908
官网地址:https://distpicker.uine.org/ 安装: npm install v-distpicker --save 局部注册: import VDistpicker from 'v-distpicker' export default { components: { VDistpicker } } 使用: <templa...
vue实现省市区三级联动
liu3325262991的博客
06-20 1337
js部分代码 ,该部分需要导入一个city.json 我放到后面或者找我要一下,里面包含省市区的数据。
省市区三级联动插件forvue
08-09
省市区三级联动插件 for vue
vue.js模仿京东省市区三级联动选择组件实例代码
12-29
在最近的工作中需要一个盒京东购物车地址选择相似的一个省市区三级联动选择组件,google查了下都是下拉框形式的,于是自己写了一个,希望对使用vue开发项目的朋友有帮助,下面话不多说了,来一起看看详细的介绍吧。...
Vue2仿淘宝实现省市区三级联动
08-28
Vue2中实现仿淘宝的省市区三级联动功能,主要是为了提供用户选择精确地理位置的交互体验。这种联动效果常见于电商、地图等应用,让用户能够快速定位到自己的所在区域。以下是一个详细的步骤来阐述如何实现这个功能...
基于Vue2实现简易的省市区三级联动组件效果
10-17
在本文中,我们将深入探讨如何基于Vue2框架实现一个简易的省市区三级联动组件。这个组件具有灵活性,可以根据需求只展示省级或省市两级,并且能够设置默认值,非常适合用于处理涉及城市区域的选择场景。 首先,...
vue省市区三联动下拉选择组件实现
08-30
本篇文章主要介绍了vue省市区三联动下拉选择组件的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
08-29
Vue.js开发中,我们经常需要实现各种交互效果,其中之一就是省市区街道4级联动的选择功能,这在电商网站的收货地址管理中尤为常见,如淘宝和京东。本篇文章将详细讲解如何利用vue和mint-ui库来实现这样一个功能。 ...
Vue实现省市区/三级联动(json数据格式)
KMINLIKE的博客
06-06 1316
【代码】Vue实现省市区/三级联动(json数据格式)
vue省市区选择组件
小爬虫的博客
11-18 3037
github链接 一、下载运行后选择下图的html2canvas即可直接去到路由界面测试 二、组件效果图 三、源码路径(源码路径github) 四、源码 <template> <div class="areaSelect-wrap"> <el-select v-model="provinceValue" placeholder="请选择省份" @change="provinceChange"> <el-option v
Vue------实现省市区三级联动
热门推荐
weixin_52953038的博客
08-27 1万+
三个下拉框,分别代表省、市、区 下面的任务就是,分别绑定 省、市、区三个下拉框: 点击省会出现所有的省份 点击对应的省份,市下拉框会对应出现对应的市 点击市会出现所有的市 点击对应的市,区下拉框会对应出现对应的区。 依次可以实现 省市区三级联动。......
省市区街道/乡镇四级联动vue3
weixin_59124055的博客
02-27 2432
省.市.区/、乡镇/街道的四级联动组件,技术栈是element + vue3,是输入框输入地址选择省市区乡镇的的联动效果,毕竟大部分人能选的话不会手输,如果不用的话直接禁用输入框就行,省下很多逻辑处理。可以参考这个地址,直接在浏览器下载也行,git 克隆到本地也行,这个json文件很大,大概两三兆,可以让后端返回。下面进入正文: (说一下主要流程,最后上全部代码)肯定涉及到父组件值的传入和子组件的值传出。
vue实现省市区三级联动文件代码
JINGZzhuo的博客
10-11 740
链接:https://pan.baidu.com/s/1sQDQz7MUt176yMD7BRv2KQ。vue项目中使用到三级联动,现在自己实现一个三级联动,仅供大家参考一下,直接上代码。mFormAddressCommon 组件代码。country和provinces2 文件
vue实现三级联动组件修改数据源_一款超简单的基于vue省市区三级联动插件
weixin_33314040的博客
01-05 467
V - Distpicker 是一个简单易用的地区选择器官网:https://distpicker.pigjian.com/github: https://github.com/jcc/v-distpicker安装npm安装:npm install v-distpicker --saveyarn安装:yarn add v-distpicker --save引入注册为全局组件:import VDis...
html引用vue组件实现省市区三级联动
04-29
HTML引用Vue组件实现省市区三级联动是一种前端开发技术。Vue.js是一种JavaScript框架,用于创建交互式和响应式的用户界面。在Vue.js中,可以使用组件实现UI复用和模块化。省市区三级联动的功能是指根据用户选择的省份和城市,在下拉菜单中动态加载相应的区列表。 要实现HTML引用Vue组件实现省市区三级联动,需要先创建一个Vue组件,包含省、市、区三个下拉菜单以及对应的数据绑定和事件处理。在调用组件时,在HTML页面中引入Vue.jsVue组件的JS文件,并在页面中设置一个标签,通过绑定组件的数据属性和事件属性实现动态联动。 在实现步骤方面,首先需要创建一个Vue组件,定义组件的模板、数据绑定等。然后,通过Vue组件的name属性和components属性将组件注册到Vue实例中。在HTML页面中,需要引入Vue.jsVue组件的JS文件,并在页面中创建一个div元素,将Vue组件和其属性绑定到该div元素上。 在组件中处理数据时,可以使用Vue.js提供的computed属性对数据进行计算和监听,也可以使用methods属性定义方法,实现指定的数据处理逻辑。 总之,HTML引用Vue组件实现省市区三级联动是一种简单而有用的前端开发技术,可以在Web应用中提供良好的用户体验和交互性。
写文章

热门文章

  • vue中this.$router.push()路由传值和获取的两种常见方法 32849
  • vue中axios的二次封装——vue 封装axios详细步骤 23524
  • JavaWeb期末考试复习总结——黑马程序员 21827
  • vue实现省市区三级联动地址选择组件(附address文件) 12246
  • Python输入一个表示星期的数字(1表示星期一,2表示星期二......6表示星期六,7表示星期日),输出对应的星期英文单词 11224

分类专栏

  • Vue 44篇
  • 实践总结 7篇
  • 微前端 4篇
  • React 1篇
  • 一些学习笔记 17篇
  • 一些踩坑笔记 22篇
  • JavaScript 17篇
  • TypeScript 2篇
  • Git 6篇
  • webpack 5篇
  • 期末复习资料 21篇
  • Python 13篇
  • Java 11篇
  • JAVAEE 4篇
  • 杂七杂八 26篇
  • 小程序 1篇

最新评论

  • ERP原理与应用期末复习

    勇敢袁员: 谢谢

  • ERP原理与应用期末复习

    小白探索世界欧耶!~: 不难的,你把课本和的ppt里面的例题学会了就没问题了

  • ERP原理与应用期末复习

    勇敢袁员: ERP的计算好难

  • Vue2项目表单初始化后无法编辑的问题

    CSDN-Ada助手: Vue入门 技能树或许可以帮到你:https://edu.csdn.net/skill/vue?utm_source=AI_act_vue

  • vscode配置之Vue开发者极度舒适的自定义配置

    欧7209: 问一些作者是怎么知道要配置的属性名和对象名的,是有帮助文档吗

大家在看

  • java计算机毕业设计影评网站系统(开题+程序+论文) 422
  • [Redis] 在Linux中安装Redis并连接图形化工具详细过程(附下载链接)
  • 每日OJ题_牛客_非对称之美_最长非回文字符串_C++_Java
  • 获得月份天数
  • MySQL数据库在Windows环境的配置

最新文章

  • Vue3 给页面添加面包屑
  • Vue2项目表单初始化后无法编辑的问题
  • 【踩坑】Vue3项目正常跑动后页面空白问题
2024
10月 1篇
09月 2篇
08月 7篇
07月 8篇
06月 1篇
05月 4篇
04月 5篇
03月 8篇
02月 6篇
01月 5篇
2023年19篇
2022年47篇
2021年30篇

目录

目录

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司松原网站优化找哪家网站自然优化电话天津网站优化哪家好济宁智能网站优化价格十堰本地网站优化价格盐城网站优化怎么弄华阴百度网站优化项城网站优化方案沧州网站搜索排名优化报价服装网站优化做什么全椒县手机网站优化铜仁企业网站seo优化关键词网站优化哪家服务好灯塔网站优化铁岭网站优化厂家大沥网站优化方式普陀区搜索引擎网站优化排名低价百度网站优化价格新乡搜索引擎网站优化哪家好网站排名优化赞易点网络网站推广的优化自适应网站移动端优化辽宁综合网站建设优化价格孝感网站建设优化技术关于网站搜索引擎优化的建议乌兰察布网站优化外包江北新区快速网站优化项城百度网站优化哪家有名网站图片优化工具威海市网站优化平台香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化