<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:04:28
        文檔

        使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果

        使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果:我們知道省市區(qū)縣都有名稱和對應的數(shù)字唯一編號,使用編號可以更方便查詢以及程序處理,我們今天來了解一下使用vue2來實現(xiàn)常見的省市區(qū)下拉聯(lián)動選擇效果。 準備數(shù)據(jù)源 我們的省市區(qū)縣的數(shù)據(jù)源來自本站文章 《基于Vue2的簡易的省市區(qū)縣三級聯(lián)動組件》 中的d
        推薦度:
        導讀使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果:我們知道省市區(qū)縣都有名稱和對應的數(shù)字唯一編號,使用編號可以更方便查詢以及程序處理,我們今天來了解一下使用vue2來實現(xiàn)常見的省市區(qū)下拉聯(lián)動選擇效果。 準備數(shù)據(jù)源 我們的省市區(qū)縣的數(shù)據(jù)源來自本站文章 《基于Vue2的簡易的省市區(qū)縣三級聯(lián)動組件》 中的d

        我們知道省市區(qū)縣都有名稱和對應的數(shù)字唯一編號,使用編號可以更方便查詢以及程序處理,我們今天來了解一下使用vue2來實現(xiàn)常見的省市區(qū)下拉聯(lián)動選擇效果。

        準備數(shù)據(jù)源

        我們的省市區(qū)縣的數(shù)據(jù)源來自本站文章 《基于Vue2的簡易的省市區(qū)縣三級聯(lián)動組件》 中的districts.js,感謝 v-distpicker 作者。districts.js中的數(shù)據(jù)格式大概是這樣的:

        export default {
         100000: {
         110000: '北京市',
         120000: '天津市',
         130000: '河北省',
         140000: '山西省',
         ...
         },
         130000: {
         130100: '石家莊市',
         130200: '唐山市',
         130300: '秦皇島市',
         130400: '邯鄲市',
         ...
         },
         130100: {
         130102: '長安區(qū)',
         130104: '橋西區(qū)',
         130105: '新華區(qū)',
         130107: '井陘礦區(qū)',
         ...
         },
         ...
        }

        很顯然,districts.js導出的是一個key:value形式的json數(shù)據(jù)串,那么在js中我們就可以很方便的處理json數(shù)據(jù)串中的關系。

        構建項目

        我們使用vue-cli構建項目,需要安裝node和vue環(huán)境。然后命令行運行: vue init webpack distpicker 構建好項目工程。具體如何操作的請參照vue官網(wǎng),這些基礎的本文不細講。

        現(xiàn)在我們直接編輯App.vue文件。

        <template>
         <div id="app" class="container">
         <div class="demo form-inline">
         <select name="province" class="form-control" v-model="province.code" @change="getCitys">
         <option value="">選擇省份</option>
         <option v-for="(item, index) in provinceList"
         :value="index"
         :key="index">
         {{ item }}
         </option>
         </select>
         <select name="city" class="form-control" v-show="showcitys" v-model="city.code" @change="getAreas">
         <option value="">選擇城市</option>
         <option v-for="(item, index) in cityList"
         :value="index"
         :key="index">
         {{ item }}
         </option>
         </select>
         <select name="area" class="form-control" v-show="showareas" v-model="area.code" @change="getDistValue">
         <option value="">選擇區(qū)縣</option>
         <option v-for="(item, index) in areaList"
         :value="index"
         :key="index">
         {{ item }}
         </option>
         </select>
         <button class="btn btn-info" @click="getSelectVal">獲取選中值</button>
         <div style="margin-top:20px;color:red">{{selected}}</div>
         </div>
         </div>
        </template>

        這是一個簡單三個下拉選擇器模板,使用 v-model 可以設置默認值, @change 當下拉選擇選項后觸發(fā)的事件。然后每個 select 下的 option 是讀取districts.js對應的數(shù)據(jù)。

        JS代碼

        我們現(xiàn)在來看JS部分,首先使用import導入省市區(qū)縣數(shù)據(jù),注意我們把districts.js文件放在項目的src目錄下,然后定義默認編號100000,因為我們第一個(省級)選擇框默認要下拉顯示所有的省/自治區(qū)/直轄市。然后在 data()部分設置變量。最后把 created()methods 部分的代碼加上,完整的代碼如下:

        import DISTRICTS from './districts';
        const DEFAULT_CODE = 100000;
        export default {
         name: 'App',
         data() {
         return {
         showcitys: false,
         showareas: false,
         selected: '',
         defaultProvince: '湖南省',
         defaultCity: '長沙市',
         defaultArea: '岳麓區(qū)',
         province: {},
         city: {},
         area: {},
         provinceList: [],
         cityList: [],
         areaList: []
         }
         },
         created() {
         this.provinceList = this.getDistricts();
         this.getDefault();
         },
         
         methods: {
         getDefault() {
         if (this.defaultProvince !== '') {
         this.showcitys = true;
         let provinceCode = this.getAreaCode(this.defaultProvince);
         this.cityList = this.getDistricts(provinceCode);
         this.province = {
         code: provinceCode,
         value: this.defaultProvince
         }
         }
         
         if (this.defaultCity !== '') {
         this.showareas = true;
         let cityCode = this.getAreaCode(this.defaultCity);
         this.areaList = this.getDistricts(cityCode);
         this.city = {
         code: cityCode,
         value: this.defaultCity
         }
         }
         
         if (this.defaultArea !== '') {
         let areaCode = this.getAreaCode(this.defaultArea);
         this.area = {
         code: areaCode,
         value: this.defaultArea
         }
         }
         },
         getSelectVal() {
         this.selected = this.province.value + this.city.value + this.area.value;
         console.log(this.province.code + '-'+ this.city.code + '-' + this.area.code);
         },
         
         //名稱轉(zhuǎn)代碼
         nameToCode(name) {
         for(let x in DISTRICTS) {
         for(let y in DISTRICTS[x]) {
         if(name === DISTRICTS[x][y]) {
         return y
         }
         }
         }
         },
         //獲取區(qū)域代碼
         getAreaCode(value) {
         if(typeof value === 'string') {
         return this.nameToCode(value);
         }
        
         return value;
         },
         
         getCodeValue(code, level=1) {
         if (level == 1) { //省級
         return DISTRICTS[DEFAULT_CODE][code];
         
         } else if (level == 2) {
         let provinceCode = this.province.code;
         return DISTRICTS[provinceCode][code];
         
         } else { //
         let cityCode = this.city.code;
         return DISTRICTS[cityCode][code];
         }
         },
         getDistricts(code = DEFAULT_CODE) {
         return DISTRICTS[code] || []
         },
         
         cleanList(name) {
         this[name] = []
         },
         getCitys(e) {
         this.cityList = this.getDistricts(e.target.value);
        
         this.cleanList('areas')
         this.province = this.setData(e.target.value, 1);
         this.areaList = [];
         this.showareas = false;
         this.showcitys = true;
         },
         getAreas (e) {
         this.areaList = this.getDistricts(e.target.value);
         this.city = this.setData(e.target.value, 2);
         this.showareas = true;
         },
         getDistValue (e) {
         this.area = this.setData(e.target.value, 3);
         },
         setData(code, level = 1) {
         code = parseInt(code);
         return {
         code: code,
         value: this.getCodeValue(code, level),
         }
         },
        
         }
        }

        運行

        我們需要實現(xiàn)的效果是:默認顯示省級下拉選擇框,下拉選項中應該默認載入省級名稱,然后當選擇省級下拉框中的省份列表(省級)選項時,顯示選中省份的城市列表(市級),然后選擇市級城市選項,顯示選擇城市的區(qū)縣列表(縣級)。在選擇完每個選項時,我們應該即時記錄選項對應的編號和名稱。如果在 data() 部分設置了省市區(qū)縣的默認值,則三個下拉框都要顯示。

        運行 npm run dev ,在瀏覽器中輸入http://localhost:8080查看效果。

        效果是實現(xiàn)了,但是如果要在一個頁面調(diào)用多個三級聯(lián)動效果則就比較尷尬了,下節(jié)我給大家講述如何把這個三級聯(lián)動效果封裝成vue組件,造好輪子,方便在更多地方調(diào)用,敬請關注。

        總結

        以上所述是小編給大家介紹的使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果

        使用vue2實現(xiàn)帶地區(qū)編號和名稱的省市縣三級聯(lián)動效果:我們知道省市區(qū)縣都有名稱和對應的數(shù)字唯一編號,使用編號可以更方便查詢以及程序處理,我們今天來了解一下使用vue2來實現(xiàn)常見的省市區(qū)下拉聯(lián)動選擇效果。 準備數(shù)據(jù)源 我們的省市區(qū)縣的數(shù)據(jù)源來自本站文章 《基于Vue2的簡易的省市區(qū)縣三級聯(lián)動組件》 中的d
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产一二三四区乱码免费| 亚洲欧美第一成人网站7777| 国产精品免费久久久久久久久| 日本a级片免费看| 亚洲av无码兔费综合| 日本免费无遮挡吸乳视频电影| 亚洲人成网站在线在线观看| 四虎影院免费在线播放| 亚洲砖码砖专无区2023| 国产在线ts人妖免费视频| 边摸边吃奶边做爽免费视频99| 亚洲性日韩精品一区二区三区| 久久er国产精品免费观看8| 亚洲国产精品线在线观看| 久久精品国产免费观看| 伊人久久五月丁香综合中文亚洲| 在线A级毛片无码免费真人| 黄页网址在线免费观看| 亚洲精品高清无码视频| 久久WWW免费人成一看片| 亚洲爆乳少妇无码激情| 亚洲精品一级无码鲁丝片| 久久久久久久99精品免费观看| 亚洲欧洲国产综合| 国产黄色片在线免费观看| 9久久免费国产精品特黄| 内射干少妇亚洲69XXX| 四虎成人免费影院网址| 国产在线精品观看免费观看| 亚洲第一网站免费视频| 日本媚薬痉挛在线观看免费| 爽爽爽爽爽爽爽成人免费观看| 亚洲国产美女视频| 亚洲成AⅤ人影院在线观看| 一个人免费日韩不卡视频| 亚洲精品无码成人| 亚洲国产精品成人精品无码区 | 亚洲va久久久噜噜噜久久男同| 亚洲网站在线免费观看| 国产成人亚洲午夜电影| 亚洲视频一区调教|