微信小程序 选择年和月以及回显 使用picker-view组件

html 复制代码
<!--选择年月-->
  <view bindtap="pickCalendar">{{year}}年{{month}}月</view>
  <picker-view wx:if="{{open}}" class="fixed-select" indicator-style="height: 50px;" style="width: 100%; height: 300px;" value="{{[year, month-1]}}" bindchange="bindChange">
    <view class="select-head">
      <view class="close" bindtap="closeSelect">取消</view>
      <view class="close sure" bindtap="sureSelect">确定</view>
    </view>
    <picker-view-column>
      <view wx:for="{{years}}" wx:key="this" class="picker-list">{{item}}年</view>
    </picker-view-column>
    <picker-view-column>
      <view wx:for="{{months}}" wx:key="this" class="picker-list">{{item}}月</view>
    </picker-view-column>    
  </picker-view>
javascript 复制代码
/*选择年月-start*/
const date = new Date()
const years = []
const months = []
for (let i = 1900; i <= date.getFullYear(); i++) {
  years.push(i)
}
for (let i = 1; i <= 12; i++) {
  months.push(i)
}
/*选择年月-end*/
Page({
  data: {
    /*选择日期-start*/
    years,
    months,
    year: date.getFullYear(), //年份
    month: date.getMonth() + 1, //几月
    value: [9999, 0, 0], // 获取年月份
    open: false,
    checkedYear: '',//选中的年份 最后赋值用
    checkedMonth: '',//选中的月份 最后赋值用
    /*选择日期-end*/
  },

  /*其它代码*/
  /*月份选择器-start*/  
  pickCalendar(){
    console.log(this.data.month)
    this.setData({
      open: true
    })
  },
  
  //确定选择
  sureSelect(){
    this.setData({
      // val 上面定义了 接收的是e里面的值 为数组 
      year: this.data.checkedYear || this.data.year,
      month: this.data.checkedMonth || this.data.month,
      open: false
    }) 
  },

  // 取消选择 
  closeSelect() {
    this.setData({
      open: false
    })
  },

  // 日期改变
  bindChange(e) {
    const val = e.detail.value
    this.setData({
      // val 上面定义了 接收的是e里面的值 为数组 
      checkedYear: this.data.years[val[0]],
      checkedMonth: this.data.months[val[1]],
    })    
  },
  /*月份选择器-end*/
})  
css 复制代码
/*选择月份-start*/
.fixed-select {
  position: fixed;
  bottom: 0;
  left: 0;
  z-index: 10;
  height: 350rpx;
  background-color: #fff;    
  border-top: 2px solid #e9e9ea;
}

.fixed-select .select-head {
  position: absolute;
  top: 0;
  z-index: 111;  
  display: flex;  
  justify-content: space-between;
  width: 100%;
  line-height: 60rpx;
  background-color: #eee;
}

.fixed-select .select-head .close {
  padding: 10rpx 20rpx;
}

.fixed-select .select-head .sure {
  color: #ffb81c;
}
.picker-list{line-height: 50px; text-align: center;}
/*选择月份-end*/

自己记录用的 可以作为参考

相关推荐
三天不学习3 小时前
UniApp三端实时通信实战:SignalR在H5、APP、小程序的差异与实现
微信小程序·uni-app·signalr
qq_12498707534 小时前
基于springboot归家租房小程序的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·小程序·毕业设计·计算机毕业设计
说私域4 小时前
留量为王,服务制胜:开源链动2+1模式、AI智能名片与S2B2C商城小程序的协同创新路径
人工智能·小程序·开源
游戏开发爱好者85 小时前
如何使用 AppUploader 提交上传 iOS 应用
android·ios·小程序·https·uni-app·iphone·webview
百锦再5 小时前
AI视频生成模型从无到有:构建、实现与调试完全指南
人工智能·python·ai·小程序·aigc·音视频·notepad++
恩创软件开发19 小时前
创业日常2026-1-8
java·经验分享·微信小程序·小程序
腾讯云云开发1 天前
微信发布AI小程序成长计划:免费云开发资源+1亿token额度!
微信小程序·ai编程·小程序·云开发
开发加微信:hedian1161 天前
推客与分销场景下的系统架构实践:如何支撑高并发与复杂业务规则
小程序
游九尘1 天前
在小程序中实现横竖屏切换的配置方法,实时监听页面宽度
小程序
weixin_lynhgworld1 天前
[特殊字符]旧物焕新颜,二手变宝藏——小程序系统开发开启绿色生活新篇章[特殊字符]
小程序·生活