基于vue+iview实现省市区三级联动

news/2024/7/9 23:57:44 标签: vue, iview, json, javascript, vue.js

表单关键代码

<FormItem prop="province" label="省份">
    <Select v-model="formValidate.province" placeholder="请选择省份" @on-change="changeProvince">
        <Option v-for="(item,index) in provinceArr" :key="item.value" :value="item.value" >{{ item.label }}</Option>
    </Select>
</FormItem>
<FormItem prop="city" label="城市">
    <Select v-model="formValidate.city" placeholder="请选择城市" @on-change="changeCity">
        <Option v-for="(item,index) in citiesArr" :key="item.value" :value="item.value" >{{ item.label }}</Option>
    </Select>
</FormItem>
<FormItem prop="county" label="区县">
    <Select v-model="formValidate.county" placeholder="请选择区县">
       <Option v-for="(item,index) in countyArr" :key="item.value" :value="item.value" >{{ item.label }}</Option>
    </Select>
</FormItem>

使用@on-change事件进行联动

vue读取本地省市区json文件

javascript">created(){
      this.$axios.get('http://localhost:8080/static/json/provinces.json').then((data) => {
          this.provinceArr = data.data.data
      })
}

不知道有没更好的获取办法,网上找了好久,省市区json是在网上找的,然后自己修改了一点,链接:文件地址

需要的js部分代码

javascript"><script>
    export default {
        data(){
            return{
                provinceArr: [],
                citiesArr: [],
                countyArr:[],
                ruleValidate: {
                    province: [
                        { required: true, message: '请选择收货地所属的省份', trigger: 'change' }
                    ],
                    city: [
                        { required: true, message: '请选择收货地所属的市', trigger: 'change' }
                    ],
                    county: [
                        { required: true, message: '请选择收货地所属的区县', trigger: 'change' }
                    ],
                }
            }
        },
        created(){
            this.$axios.get('http://localhost:8080/static/json/provinces.json').then((data) => {
                this.provinceArr = data.data.data
            })
        },
        methods: {
            changeProvince(val){
            for(var i=0; i<this.provinceArr.length; i++){
                if(val == this.provinceArr[i].value ){
                    this.citiesArr = this.provinceArr[i].children
                    this.formValidate.county = ''
                    this.countyArr = []
                }
            }
        },
        changeCity(val){
            for(var i=0; i<this.citiesArr.length; i++){
                if(val == this.citiesArr[i].value ){
                    this.countyArr = this.citiesArr[i].children
                }
            }
        }
    }
}
</script>

效果图


http://www.niftyadmin.cn/n/1466625.html

相关文章

JavaScript中将iso8859-1的字符转换成中文

var str “\u0088\u0088\u0091\u00AD\u009B”; var utfstring decodeURI(escape(str)) 是用escape把iso8859-1的字符进行编码&#xff0c;然后再调用decodeURI按照utf8的方式进行解码。 当然上面的编码会把符号也会转义&#xff0c;这个时候只需按照下面的改下就可以了 var …

网站前端如何实现HTML转PDF下载的两种方式

将HTML页面转化为PDF下载是前端经常会遇到的需求&#xff0c;下面就列举两种方式进行实现。以下两种方式默认都是在Vue项目环境下&#xff0c;其他框架项目自行灵活运用。 方式一&#xff1a;使用html2canvas和jspdf插件实现 该方式是通过html2canvas将HTML页面转换成图片&…

在vue中阻止click事件冒泡,防止触发冒泡另一个事件

使用vue阻止子级元素的click事件冒泡&#xff0c;很简单&#xff0c;用stop <div click"test1()"><span click.stop"test2()">按钮1</span><span>按钮2</span> </div> 这样点击div里面的按钮1&#xff0c;就不会触发…

vue中按钮防止暴力点击,多次提交数据的问题,组件通用化封装

方法1&#xff1a;用计时器改变按钮可点击状态 <template><div class"test"><button click"btnClick">button</button></div> </template><script>export default {name: HelloWorld,data() {return {is_click…

js 实现 list转换成tree的方法示例(数组到树)

目标&#xff1a; JS 将有父子关系的平行数组转换成树形数据 方法&#xff1a;双重遍历&#xff0c;一次遍历parentId,一次遍历id parendId; 该方法应该能很容易被想到&#xff0c;实现起来也一步一步可以摸索出来&#xff1b; const oldData [{id:1,name:boss,parentId:…

div在body中可以任意拖动

HTML代码 <div id"idOuterDiv" class"CsOuterDiv"></div> CSS代码 body {background-color:#232429; } .CsOuterDiv {width:256px;height:146px;background-color:white;position:absolute;top:50%;left:50%;transform:translateX(-50%) tra…

在Vue中使用JSX作为render

ant-design-vue开源了一段时间后&#xff0c;收到了一些反馈&#xff0c;尤其是Form组件上线后&#xff0c;很多用户对JSX的使用感到迷惑和不习惯&#xff0c;为此专门介绍下Vue JSX的使用姿势及注意事项。 Form组件的自动收集校验功能需要在JSX下使用&#xff0c;当然如果不需…

Vue 自定义指令实现点击DOM元素以外触发事件

1.directive.js import Vue from "vue";// 提交验证Vue.directive("clickOutside", {// 初始化指令bind(el, binding, vnode) {function clickHandler(e) {// 这里判断点击的元素是否是本身&#xff0c;是本身&#xff0c;则返回if (el.contains(e.target…