本文实例为大家分享了微信小程序实现选择地址省市区三级联动的具体代码,供大家参考,具体内容如下
微信原生地址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
暂无“微信小程序实现选择地址省市区三级联动”评论...
更新动态
2025年11月05日
2025年11月05日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]
