本文实例为大家分享了微信小程序实现选择地址省市区三级联动的具体代码,供大家参考,具体内容如下
微信原生地址API,缺少省市区code,因此自己写了一个收货地址
思路:在onload预先加载全部省和第一个省的全部市和区,加载全部会导致几秒的事件阻塞。点击选择地址弹窗后,按需加载操作,滑动省加载对应的市和第一个市对应的区,滑动市加载区,滑动区只更改区的值
onLoad: function(options) { var that = this; // 此文件为全部省以及第一个省的市和区 var cityData = districtLoad.districtLoad; // 存放省 const provinces = []; // 存放市 const citys = []; // 存放区 const countys = []; for (let i = 0; i < cityData.length; i++) { provinces.push(cityData[i]); } for (let i = 0; i < cityData[0].sub.length; i++) { citys.push(cityData[0].sub[i]) } for (let i = 0; i < cityData[0].sub[0].sub.length; i++) { countys.push(cityData[0].sub[0].sub[i]) } that.setData({ provinces, citys, countys }) }
滑动省市区事件
bindChange: function(e) { var that = this; var val = e.detail.value var t = this.data.values; // 滑动省 if (val[0] != t[0]) { const citys = []; const countys = []; // 保存市 for (let i = 0; i < cityData[val[0]].sub.length; i++) { citys.push(cityData[val[0]].sub[i]) } // 保存第一个市的全部区 for (let i = 0; i < cityData[val[0]].sub[0].sub.length; i++) { countys.push(cityData[val[0]].sub[0].sub[i]) } // 保存 this.setData({ province: cityData[val[0]].name, city: cityData[val[0]].sub[0].name, citys: citys, countys: countys, values: val, value: [val[0], 0, 0], fdeliveryProvince: this.data.provinces[val[0]].code, fdeliveryCity: cityData[val[0]].sub[0].code, }) // 防止只有省市的情况 if (cityData[val[0]].sub[0].sub.length!=0){ that.setData({ county: cityData[val[0]].sub[0].sub[0].name, fdeliveryArea: cityData[val[0]].sub[0].sub[0].code }) }else { that.setData({ county: '', fdeliveryArea:'' }) } return; } // 滑动市 if (val[1] != t[1]) { const countys = []; // 保存市 for (let i = 0; i < cityData[val[0]].sub[val[1]].sub.length; i++) { countys.push(cityData[val[0]].sub[val[1]].sub[i]) } // 保存 this.setData({ city: this.data.citys[val[1]].name, countys: countys, values: val, value: [val[0], val[1], 0], fdeliveryCity: this.data.citys[val[1]].code, }) // 防止只有省市的情况 if (countys.length != 0) { that.setData({ county: cityData[val[0]].sub[val[1]].sub[0].name, fdeliveryArea: cityData[val[0]].sub[val[1]].sub[0].code }) } else { that.setData({ county: '', fdeliveryArea: '' }) } return; } // 滑动区 if (val[2] != t[2]) { this.setData({ county: this.data.countys[val[2]].name, values: val, fdeliveryArea: this.data.countys[val[2]].code }) return; } }
html
<view class="citypicker" wx:if="{{condition}}"> <view class="cityheader"> <view bindtap="open" class="city-cancel">取消</view> <view bindtap="open" class="city-true">确定</view> </view> <picker-view indicator-style="height: 40px;" style="font-size:30rpx; width: 100%; height: 290px;" value="{{value}}" bindchange="bindChange" class="citybody"> <picker-view-column> <view wx:for="{{provinces}}" wx:key="{{item.name}}" wx:code="{{item.code}}" style="line-height: 40px;padding-left:10px;">{{item.name}}</view> </picker-view-column> <picker-view-column> <view wx:for="{{citys}}" wx:key="{{item.name}}" wx:code="{{item.code}}" style="line-height: 40px;padding-left:10px;">{{item.name}}</view> </picker-view-column> <picker-view-column> <view wx:for="{{countys}}" wx:key="{{item.name}}" wx:code="{{item.code}}" style="line-height: 40px;padding-left:10px;">{{item.name}}</view> </picker-view-column> </picker-view> </view>
效果图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“微信小程序实现选择地址省市区三级联动”评论...
更新动态
2024年04月29日
2024年04月29日
- PUBG官方确认5月14日回归经典艾伦格地图
- 物华弥新迷踪盘第14关怎么过 迷踪盘第14关通关方法
- 逆水寒手游1.3.2馆藏上新介绍 逆水寒手游馆藏更新了什么
- 物华弥新迷踪盘第1关怎么过 迷踪盘第1关通关方法
- win7没密钥怎么永久激活,w7系统激活密钥一键激活方法
- 怎么安装电脑系统版本,怎么安装电脑的系统
- 苹果电脑wps安装字体,苹果电脑wps怎么设置字体
- 活力美少女!《摇曳露营△》各务原抚子&志摩凛手办
- 《哥斯拉大战金刚2》票房破9亿 观影人次达2100万!
- 全新IP!《寂静岭2:重制版》开发商正在开发两款新作
- FlorilegiumandAshleySolomon-Haydn-SymphoniesNos.6,7,8LeMatin,Lemidi,LeSoir[flac]
- [PTC5186211]花痴系列-柏辽兹-幻想交响曲,Op.14-小泽征尔-波士顿交响乐团iso
- 欧阳菲菲-爱的路上我和你[东尼机构TONYLP-71LP黑胶转录]1977WAV+CUE
- 玩家确认《剑星》实体版可玩未审核版本:需断网安装
- 用火力战胜恐惧!《Backrooms Break》现已正式上线