微信小程序 省市区三级地址选择实现

微信小程序实现省市区三级地址选择 picker 一.wxml <view class="section"> <picker mode="region" bindchange="bindRegionChange" value="{{region}}" custom-item="{{customItem}}"> <view class="picker"&... 阅读详情

国际惯例 上效果图:

省市区三级联动,选择省自动刷新市,选择市自动刷新区,点击取消自动返回上一级重新选择,点击确定,保存地址。

数据库

这份数据库是某天在网上逛到的,当时未记录出处,直接贴出给读者使用,实在不妥,此处仅贴出表结构,方便大家交流学习。如有读者了解此份数据出处,烦请留言,谢谢!

数据表结构如下:

部分使用到的字段信息:

id:唯一标识每一个数据

name:地区名

parent_id:上级地区的id,若parent_id = 0 ,表示无上级信息,当前即为最高行政区。

extra:主要标识少数民族自治州或者自治县的信息,如:巴音郭楞 蒙古 自治州,此处存储 蒙古 

例:

suffix:行政级别 市 省 县 区等

 

部分地区数据信息如下:

后台

后台仅需提供一个接口,根据parent_id,查询地区信息

此处使用的后台是SSM框架,贴出主要接口、sql

1.与小程序交互接口

@RequestMapping(value = "/getArea", method = RequestMethod.POST)
	private @ResponseBody
	List<District> getArea(HttpServletRequest request) {
		int parentId = Integer.parseInt(request.getParameter("parentId"));
		logger.info("getArea");
		List<District> list = new ArrayList<District>();
		try {
			list = districtService.getAreas(parentId);
		} catch (Exception e) {

		}
		return list;
	}

2.查询sql

	<select id="getAreas" resultType="District">
		<!-- 具体的sql -->
		SELECT
			id,concat(name,extra,suffix) as name,parent_id as parentId
		FROM
			district
		WHERE
			parent_id = #{parentId}
	</select>

前端

先贴出css:

.hotCity {
  padding-right: 50rpx;
  margin: auto;
}

.weui-grid {
  padding: 10rpx 0;
  width: 160rpx;
  box-sizing: border-box;
  border: 1rpx solid #ececec;
  border-radius: 8rpx;
  background-color: white;
  margin: 8rpx 0;
}

.weui-grids {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

.weui-grid__label {
  display: block;
  text-align: center;
  color: #333;
  font-size: 30rpx;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
.county {
  display: flex;
  flex-wrap: wrap;
  margin-top: 30px;
  margin-left: 15px;
}
/** 头部css **/
.headTitle{
  display: flex;
}

.headButton{
	background: #f68135;
	border-radius: 25rpx;
	border: 1px solid #f68135;
	color: #fff;
	height: 80rpx;
	line-height: 80rpx;
	margin: 0 auto;
	width: 150rpx;
  font-size: 45rpx;
  text-align: center;
  padding:0px;
  vertical-align:middle ;
}

html

html仅由两部分组成:

头部:确定、取消按钮,显示当前选择地址信息

         确定取消主要绑定了两个方法:submitChoose 及 cancleChoose 两个方法,点击不同按钮,执行不同js方法。

         显示当前地址信息:finalCity,只要在js中使用setData设置该值,该值就会动态改变。

city:显示当前可选的地区

        使用block组件,对json数组areaList进行循环显示,同样,使用setData设置该值,该值就会动态改变,达到省市区联动选择的效果。每一个小地区控件,有bindArea方法,并且在用户选择该地区,执行bindArea方法时,使用data-数据名的方法,向后台传递用户选择数据。

<view class="headTitle">
<button class="headButton" bindtap="cancleChoose">取消</button>
<view>{{finalCity == "" ? "请选择地址" : finalCity}}</view>
<button class="headButton" bindtap="submitChoose">确定</button>
</view>
<view class="county">
  <block class="hotCity" wx:for-items="{{areaList}}" wx:key="id">
    <view class="weui-grid" style="margin-right: 16rpx;" data-parentId="{{item.parentId}}" data-id="{{item.id}}" data-city="{{item.name}}" bindtap="bindArea">
      <view class="weui-grid__label">{{item.name}}</view>
    </view>
  </block>
</view>

js:

// pages/chooseCity/chooseCity.js
//获取应用实例
const model = require('../cityChoose/cityChoose.js')
const config = require('../../utils/config.js')
const util = require('../../utils/util.js')
const app = getApp();
//记录省市区
var nav = 0;
var chooseCity = new Array(3);
//记录每一次的parentId
var finalParentId = new Array(3);
var flag = 0;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    finalCity:"",
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    //parentId = 0 取所有省份数据
    var that = this;
    that.getData(0);
    chooseCity = new Array("","","");
    finalParentId = new Array(0,0,0);
    nav = 0;
  },
  submitChoose:function(e){
    if(flag != 1){
      util.showLog("请选择完整地址")
      return;
    }else{
      var address_components = { "province": "", "city": "", "district": ""};
      address_components["province"] = chooseCity[0];
      address_components["city"] = chooseCity[1];
      address_components["district"] = chooseCity[2];
      console.log(address_components);
      app.globalData.address_components = address_components;
      wx.navigateBack();
    }
  },
  cancleChoose:function(e){
    console.log(finalParentId);
    var that = this;
    if(nav == 0){
      wx.navigateBack();
    } else {
      nav = nav - 1;
      chooseCity[nav] = "";
      console.log(chooseCity);
      that.setData({
        finalCity: chooseCity[0] + chooseCity[1] + chooseCity[2]
      })
      that.getData(finalParentId[nav]);
    }
  },
  bindArea: function(e) {
    if(flag == 0){
      console.log(e);
      var that = this;
      var parentId = e.currentTarget.dataset.id;
      var city = e.currentTarget.dataset.city;
      that.getData(parentId);
      chooseCity[nav] = city;
      finalParentId[nav] = e.currentTarget.dataset.parentid;
      nav++;
      console.log(chooseCity)
      that.setData({
        finalCity:chooseCity[0]+chooseCity[1]+chooseCity[2]
      })
    }
  },
  getData(parentId) {
    var that = this;
    var url = config.getArea + "?parentId=" + parentId;
    wx.request({
      url: url,
      success: (res) => {
        console.log("地区数据请求成功");
        console.log(res)
        if (res.data.length != 0) {
          flag = 0;
          //设置数据到全局变量
          that.setData({
            areaList: res.data,
          });
        }else{
          //防止用户再次点击;
          flag = 1;
        }
      },
      method: "POST",
      header: {
        "content-type": "application/x-www-form-urlencoded;charset=utf-8",
      },
      fail: (res) => {
        console.log("地区数据请求失败");
      }
    })
  },
})

js解析

全局变量作用:

      //记录用户已选择层次

      var nav = 0;

      //记录省市区三级数据

       var chooseCity = new Array(3);

      //记录每一次的parentId,主要记录用户选择路径,取消时根据用户路径显示上一级数据

     var finalParentId = new Array(3);

    //记录是否已经到最底层,再无数据可以选择

    var flag = 0;

执行过程:

    进入页面执行onLoad生命周期函数,在onLoad中调用getData初始化数据,及默认显示行政级别为省的数据,即请求parent_id为0的数据

  getData:

 

getData(parentId) {
    var that = this;
//请求的url,由后台决定,此处填入你的请求url即可
    var url = config.getArea + "?parentId=" + parentId;
    wx.request({
      url: url,
      success: (res) => {
        console.log("地区数据请求成功");
        console.log(res)
        if (res.data.length != 0) {
          flag = 0;
          //设置数据到全局变量
          that.setData({
            areaList: res.data,
          });
        }else{
          //已到最后一层数据
          flag = 1;
        }
      },
      method: "POST",
      header: {
        "content-type": "application/x-www-form-urlencoded;charset=utf-8",
      },
      fail: (res) => {
        console.log("地区数据请求失败");
      }
    })
  },

   点击地区数据执行bindArea

bindArea: function(e) {
   //如果未到最后一层,即可向下执行 
   if(flag == 0){
      console.log(e);
      var that = this;
   //获取html传参,获取用户点击信息
      var parentId = e.currentTarget.dataset.id;
      var city = e.currentTarget.dataset.city;
   //根据用户点击的数据,传入当前的id作为下一层的parentId,请求下一层数据,
      that.getData(parentId);
  //记录用户选择
      chooseCity[nav] = city;
//用户点击取消,到此层时,需要使用当前的parientid来请求此层应显示的数据
      finalParentId[nav] = e.currentTarget.dataset.parentid;
//记录路径数+1
      nav++;
      console.log(chooseCity)
//更新用户选择地区显示
      that.setData({
        finalCity:chooseCity[0]+chooseCity[1]+chooseCity[2]
      })
    }
  },

点击取消,执行方法cancleChoose

cancleChoose:function(e){
    var that = this;
//已是最后一层,则返回上一页
    if(nav == 0){
      wx.navigateBack();
    } else {
//记录路径数-1
      nav = nav - 1;
//将上次已选择的地区清空
      chooseCity[nav] = "";
      console.log(chooseCity);
//更新选择数据
      that.setData({
        finalCity: chooseCity[0] + chooseCity[1] + chooseCity[2]
      })
//根据finalParent中记录的每一层应请求的数据来更新地区数据
      that.getData(finalParentId[nav]);
    }
  },

点击确定,执行方法submitChoose   

submitChoose:function(e){
//如果未到最后一层,表示地址未选择完,如果不需要选择完整地址,此处去掉即可
    if(flag != 1){
      util.showLog("请选择完整地址")
      return;
    }else{
//存储数据到全局变量中,采用了json的方式存储,可以分别存储省市区数据
      var address_components = { "province": "", "city": "", "district": ""};
      address_components["province"] = chooseCity[0];
      address_components["city"] = chooseCity[1];
      address_components["district"] = chooseCity[2];
      console.log(address_components);
      app.globalData.address_components = address_components;
//返回上一次页面
      wx.navigateBack();
    }
  },

谢谢大家查看,评论里希望贴出cityChoose.js 及 util.js ,在下面贴出来啦,注:util.js里不是所有方法都要用到。

希望能够帮助到大家。

cityChoose

// pages/chooseCity/chooseCity.js
//获取应用实例
const model = require('../cityChoose/cityChoose.js')
const config = require('../../utils/config.js')
const util = require('../../utils/util.js')
const app = getApp();
//记录省市区
var nav = 0;
var chooseCity = new Array(3);
//记录每一次的parentId
var finalParentId = new Array(3);
//记录是否到最后一级
var flag = 0;
Page({

  /**
   * 页面的初始数据
   */
  data: {
    finalCity:"",
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    //parentId = 0 取所有省份数据
    var that = this;
    that.getData(0);
    chooseCity = new Array("","","");
    finalParentId = new Array(0,0,0);
    nav = 0;
  },
  submitChoose:function(e){
    if(flag != 1){
      util.showLog("请选择完整地址")
      return;
    }else{
      var address_components = { "province": "", "city": "", "district": ""};
      address_components["province"] = chooseCity[0];
      address_components["city"] = chooseCity[1];
      address_components["district"] = chooseCity[2];
      console.log(address_components);
      app.globalData.address_components = address_components;
      wx.navigateBack();
    }
  },
  cancleChoose:function(e){
    console.log(finalParentId);
    var that = this;
    if(nav == 0){
      wx.navigateBack();
    } else {
      nav = nav - 1;
      chooseCity[nav] = "";
      console.log(chooseCity);
      that.setData({
        finalCity: chooseCity[0] + chooseCity[1] + chooseCity[2]
      })
      that.getData(finalParentId[nav]);
    }
  },
  bindArea: function(e) {
    if(flag == 0){
      console.log(e);
      var that = this;
      var parentId = e.currentTarget.dataset.id;
      var city = e.currentTarget.dataset.city;
      //刷新出下一级地址前重复点击
      console.log(chooseCity[nav - 1] );
      console.log(city);
      if(chooseCity[nav-1] == city){
        return;
      }
      that.getData(parentId);
      chooseCity[nav] = city;
      finalParentId[nav] = e.currentTarget.dataset.parentid;
      nav++;
      console.log(chooseCity)
      that.setData({
        finalCity:chooseCity[0]+chooseCity[1]+chooseCity[2]
      })
    }
  },
  getData(parentId) {
    var that = this;
    var url = config.getArea + "?parentId=" + parentId;
    wx.request({
      url: url,
      success: (res) => {
        console.log("地区数据请求成功");
        console.log(res)
        if (res.data.length != 0) {
          flag = 0;
          //设置数据到全局变量
          that.setData({
            areaList: res.data,
          });
        }else{
          //防止用户再次点击;
          flag = 1;
        }
      },
      method: "POST",
      header: {
        "content-type": "application/x-www-form-urlencoded;charset=utf-8",
      },
      fail: (res) => {
        console.log("地区数据请求失败");
      }
    })
  },
})

util.js

const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

function showLog(e) {
  wx.showToast({
    title: e,
    icon: "none"
  })
}

function trim(str) {
  return str.replace(/(^\s*)|(\s*$)/g, "");
}

function showLoading() {
  wx.showLoading({
    title: '加载中',
    mask: true
  })
}

// 验证码倒计时
function phone_code(t, second) {
  // t是this,second是重新发送的间隔时间,需要设置按钮可点击
  var s = second;
  // 避免重复点击
  t.setData({
    phone_code_text: s + "s",
    phone_code_class: "",
    phone_code_buff: true
  });

  // 倒计时
  var clock = setInterval(function () {
    if (s > 1) {
      t.setData({
        phone_code_text: --s + "s"
      })
    } else {
      clearInterval(clock);
      t.setData({
        phone_code_text: "重新发送",
        phone_code_class: "on",
        phone_code_buff: false
      });
      // 重置数据
      s = second;
    }
  }, 1000)
}
function getNowFormatDate() {
  var date = new Date();
  var seperator1 = "-";
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var strDate = date.getDate();
  if (month >= 1 && month <= 9) {
    month = "0" + month;
  }
  if (strDate >= 0 && strDate <= 9) {
    strDate = "0" + strDate;
  }
  var currentdate = year + seperator1 + month + seperator1 + strDate;
  return currentdate;
}

function checkAndCall(sourceId,recordType,tele,app,config){
  console.log(app.globalData.haulUserInfo)
  console.log(tele);
  if (app.globalData.haulUserInfo == null) {
    showLog("正在获取用户数据,请稍后。")
    app.Promise.then(function (value) {
      console.log(value);
      if (value) {
        // success
        wx.makePhoneCall({
          phoneNumber: tele,
          success: ph => {
            mycall(config, app,recordType, sourceId, function () {
              //记录联系次数
            })
          }
        })
      } else {
        // failure
        showLog("注册完成即可联系" + "。。。即将跳转")
        setTimeout(function () {
          wx.navigateTo({
            url: '../registUser/registUser',
          })
        }, 1000);
      }
    }).catch(function (error) {
    });
  } else {
    // success
    wx.makePhoneCall({
      phoneNumber: tele,
      success: ph => {
        mycall(config,app, recordType, sourceId,function () {
          //记录联系次数

        })
      }
    })
  }
}

//记录互相联系
function mycall(config,app, recordType, sourceId, callback) {
  console.log(typeof (recordType))
  var that = this;
  wx.request({
    url: config.insertRecord,
    method: "POST",
    data: {
      sourceId: sourceId,
      userId: app.globalData.haulUserInfo.id,
      recordType: recordType
    },
    header: {
      "content-type": "application/x-www-form-urlencoded",
    },
    success: res => {
      if (res.data.success) {
        console.log('联系成功');
        callback();
      } else {
        showLog(res.data.error);
      }
    }
  })
}

module.exports = {
  formatNumber: formatNumber,
  formatTime: formatTime,
  phone_code_clock: phone_code,
  showLoading: showLoading,
  showLog: showLog,
  getNowFormatDate: getNowFormatDate,
  trim: trim,
  mycall: mycall,
  checkAndCall: checkAndCall
}

 

微信小程序 - 最新详细实现省市区三级联动组件插件,小程序选择省市区弹框,选择省市区联动详细教程,省市区三级地址选择,微信小程序中使用picker封装省市区三级联动实现(详细示例代码,一键复制开箱即用 微信小程序,省市区,省份,市区,区县,弹框式省市区三级联动,uniapp,小程序省市区三级联动,如何实现省市区数据动态懒加载,微信小程序省市区三级联动,微信小程序三级联动,省市区联动组件封装,使用picker封装省市区三级联动的实现,微信小程序picker实现的省市区三级联动,怎么懒加载,怎么选择省份的时候再出现市区,省市区三级联动后台数据动态加载到页面,报错怎么办,省市区有什么插件,动态加载省市区的数据,新手小白详细教程,小程序 后台动态数据 省市二级联动,完整运行示例源代码,小程序三级地址联动,地址选择 阅读详情

相关推荐

uniapp [全端兼容] - 实现省市区选择器三四级联动组件,uniapp选择地址自定义省市区三级联动插件,弹框式多级联动选择器区域选择(全平台兼容苹果安卓App、支付宝微信小程序、移动端H5网页)

uni-app省市区选择器,省市区街道三级四级联动选择器,uniapp自定义多列选择器省市两级联动,uniapp picker组件实现多级联动,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniApp选择器省市区县街道乡镇,uniapp实现省市区选择联动,uniapp城市三级联动(自定义组件)_uniapp三级联动,picker插件省市区联动,uniapp小程序省市区选择器,uni-app 省市区街道的四级联动选择,uniapp怎样实现省市区地址三级联动uni

🏆 前端领域优质创作者 1万+

【愚公系列】2022年08月 微信小程序-省市区三联动功能实现

多级联动下拉菜单是前端常见的效果,省市区三级联动又属于其中最典型的案例。多级联动一般都是与数据相关联的,根据数据来生成和修改联动的下拉菜单。完成一个多级联动效果,有助于增强对数据处理的能力。数据可以是后台从数据库读出来的数据,也可以是在JS里直接写的数据。但无论是哪种形式,三个数组的数据都是有关联的。citys,市数组,里面每一项内容都有一个属性表示这个市是属于哪个省的,即对应的是省数组里的id。同样areas,区数组,里面都有属性是对应市数组里的id,表示这个区是属于哪个市的。...

愚公智库 1万+

封装CTP API为Java SDK

本文介绍了在Windows环境下使用Java调用CTP API的编译实现过程。首先需要准备CTP API SDK、JDK、SWIG和Visual Studio等工具,配置好开发环境。然后通过搭建目录结构、编写SWIG接口文件ctp.i,实现C++到Java的代码转换。文中详细说明了文件目录组织方式,并提供了处理中文乱码的代码示例。通过这一系列步骤,最终将CTP的C++接口转换为Java可调用的形式,为Java项目获取期货实时报价数据提供支持。

weixin_43952815的博客 1222

微信小程序选择市,区县

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 微信小程序选择市,区县的实现 demo的需求是 做一个两列选择器,选择江西省范围内的所有市以及区县,滑动到每个城市 自动匹配出它的区县并赋值到第二列,用户选择完以后验证选中的区县是否匹配。(因为自动匹配出第二列的区县需要一点时间,用户滑动第一列市快的话会出现市和区县不匹配的解决方法) 滚动选择器 ...

a_靖的博客 1万+

Slurm集群调度策略详解(1)-主调度

Slurm调度系统中针对作业的调度主要有三种,主调度,回填调度,GANG调度,这篇文章主要针对主调度进行解析。

h_m_l的博客 6031

告别Inspect!用微软官方推荐的Accessibility Insights搞定WinApp自动化测试元素定位

本文介绍了如何从传统的Inspect工具升级到微软官方推荐的Accessibility Insights for Windows,以提升Windows应用自动化测试中的元素定位效率。通过详细的功能对比、安装指南和实战技巧,帮助测试工程师掌握这款现代化工具的核心优势,包括实时元素检测、属性筛选和与WinAppDriver、Appium等测试框架的无缝集成。

weixin_26749245的博客 623

微信小程序自定义数据实现级联省市区组件

微信小程序自定义数据实现级联省市区组件

希望看完文章的你能够带着答案离开。 4356

发那科机器人弧焊指令实战:从Search指令到组掩码设置的完整避坑指南

本文详细解析了发那科机器人弧焊指令系统的实战应用,从Search指令的正确使用到组掩码设置的避坑技巧。通过实际案例和参数优化建议,帮助工程师提升焊接质量和生产效率,避免常见错误操作。特别针对T2模式示教难题和外部轴协调运动提供了专业解决方案。

weixin_29040367的博客 185

微信小程序组件简易实现省市区三级联动

微信小程序组件使用-快速实现省市区三级联动

SoulNone的博客 1276

【图文步骤】EC-Engineer部分操作详细步骤

EC-Engineer部分功能详细使用手册

weixin_42212468的博客 6173

【硬件开源实战】STM32G070RBT6开发板从设计到避坑全解析

本文全面解析了STM32G070RBT6开发板从硬件设计到避坑的实战经验。详细介绍了电源设计、时钟电路、PCB布局等关键环节,分享了成本控制、焊接测试、软件开发和外设驱动的实用技巧,帮助开发者高效完成项目开发。

weixin_26897585的博客 239

终极指南:5分钟快速上手微信小程序地址选择器,实现省市区三级联动

想要在微信小程序中快速集成省市区地址选择功能吗?这个开源项目为你提供了完美的解决方案!微信小程序省市(区)地址选择联动组件让用户能够轻松选择完整的收货地址,提升用户体验的同时简化开发流程。 ## 🎯 项目核心功能 这个微信小程序组件实现了**省市区三级联动选择器**,用户可以: - 通过滚动选择省份、城市和区县 - 实时查看选择的完整地址信息 - 一键获取已选择的城市数据 通过[src/p

gitblog_00208的博客 477

xHCI驱动学习(1) 核心数据结构

虽然Linux内核拥有C语言构建的身体,但它骨子里散发的是面向对象的气质,这一个个的对象就是struct。面对一个内核模块的时候,首先要找出关键的struct和它们之间的关系,才能摸清代码的骨骼脉络。今天来理清USB xHCI相关的数据结构类型usb_hcd、xhci_hcd、hc_driver和全局变量xhci_pci_driver、xhci_hc_driver、xhci_pci_hc_driver之间的关系。

1万+

微信小程序省市区地址选择器终极使用指南:快速实现三级联动选择功能 [特殊字符]

想要在你的微信小程序中快速实现省市区三级联动地址选择功能吗?wx_selectArea项目为你提供了一个完整、简单且高效的解决方案!这款**微信小程序省市区地址选择器**采用微信官方`picker-view`组件,能够轻松实现地址数据的联动选择,让你的小程序开发事半功倍。 ## 📋 项目概览 wx_selectArea是一个专为微信小程序设计的**省市区联动选择器**组件,支持完整的省、市、

gitblog_00177的博客 405

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

微信小程序地址选择器:5分钟实现省市区三级联动的高效解决方案

在微信小程序开发中,地址选择功能是电商、物流、用户注册等场景中的高频需求。然而,从零开始实现一个稳定、流畅的省市区三级联动组件,开发者往往需要面对数据接口管理、UI交互设计、性能优化等多重挑战。如何快速集成一个既美观又实用的地址选择器,同时保持代码的可维护性和扩展性? ## 问题场景与技术挑战 当你需要在微信小程序中集成地址选择功能时,通常会遇到以下几个痛点: **数据管理复杂度高**:省市

gitblog_01158的博客 217

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

微信小程序省市区地址选择器终极指南:5分钟快速实现三级联动选择

想在微信小程序中快速集成省市区地址选择功能吗?这个开源项目为你提供了完美的解决方案!微信小程序省市(区)地址选择联动组件让用户能够轻松选择完整的收货地址,提升用户体验的同时简化开发流程。通过简单的配置和几行代码,你就能在微信小程序中实现专业的省市区三级联动选择功能,无论是电商平台、服务类应用还是数据统计场景都能完美适配。 ## 🎯 项目概览与价值定位 微信小程序省市区地址选择器是一个专门为微

gitblog_00218的博客 301

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

终极微信小程序地址选择器:快速实现省市区三级联动 [特殊字符]

还在为微信小程序的地址选择功能而烦恼吗?想要快速实现省市区三级联动却不知从何入手?这个终极微信小程序地址选择器项目正是你需要的解决方案!它提供了一套完整、简单、免费的省市区地址选择联动组件,让你在几分钟内就能集成到自己的小程序中。 ## 🎯 项目核心功能亮点 **省市区三级联动选择**是这个项目的核心关键词,它完美解决了地址选择中的层级联动问题。通过滑动选择或点击操作,用户可以从省→市→区依

gitblog_00328的博客 538

微信小程序实现省市区级联选择组件

微信小程序实现省市区级联选择组件

温暖前端的博客 2222

撸个微信小程序的省市区选择器

起因 微信小程序虽然已经有现成的封装好的省市区选择器给开发者使用,然鹅不幸的是,微信地址库的数据和公司用的地址库数据很难一一对上,那就只能撸起袖子自己写个组件了。 最终效果 思维导图 主要代码 组件 ...

weixin_39037804的博客 701

微信小程序的省市区三级地址mysql_微信小程序picker实现的省市区三级联动

微信小程序的省市区三级联动需要使用到的是Picker多列选择器,参考文档:https://www.w3cschool.cn/weix...,案例中用到的省市区的json文件在文后发出出来。废话不多说,来看看具体地实现吧。视图viewbindchange="func_changeCitysChange"bindcolumnchange="func_changeCitysChangeColumn" v...

weixin_34456923的博客 334

运用小程序实现 省市区三级联动

// wxml 部分代码如下&lt;view class="list"&gt; &lt;view class='list-left'&gt;地区:&lt;/view&gt; &lt;view bindtap='showPicker' class="list-right {{flag ? '' : 'placeholder'}}"&gt; &lt;block wx:if="{{f

weixin_40658500的博客 1807

微信小程序 三级联动省市区

微信小程序 三级联动

UFO00001的博客 6649

百度小程序省市区三级联动终极版

百度小程序省市区三级联动终极版

Jack, what else can you do besides holding your little darling? 425

小程序中轻松实现省市区的三级联动,选择地区如此简单

介绍 省市区的三级联动,一般来说,还是挺麻烦的,但是好在,在小程序中,已经都做好了。 三级联动:其实没有什么特别的意义了,只是一种习惯的叫法,意思为通过省来确定市,通过市来确定区,由上一级决定下一级,所以是三级联动。 参数 在小程序中可以直接使用picker标签 mode要设置为region,必须要填写 bindchange 绑定选择事件 绑定事件之中,通过e.detail.value可以获得省-市-区的文字值,通过e.detail.code可以获得省市区的编号值。这两项保存的值,均为数.

吴茗的博客 2810
上一篇: 微信小程序 评论留言功能实现 仿知乎
下一篇: 微信小程序 模板消息
蜗牛专注学习
博客等级 码龄15年 127粉丝 58原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值