微信小程序日历/日期选择插件使用方法详解


Posted in Javascript onDecember 28, 2018

微信小程序日历选择器插件点击日历日期可以获取到年月日,具体内容如下

微信小程序日历/日期选择插件使用方法详解

wxml

<view class="canlendarBgView">
 <view class="canlendarView">
  <view class="canlendarTopView">
   <view class="leftBgView" bindtap="handleCalendar" data-handle="prev">
    <view class="leftView">《</view>
   </view>
   <view class="centerView">{{cur_year || "--"}} 年 {{cur_month || "--"}} 月</view>
   <view class="rightBgView" bindtap="handleCalendar" data-handle="next">
    <view class="rightView">》</view>
   </view>
  </view>
  <view class="weekBgView">
   <view class="weekView" wx:for="{{weeks_ch}}" wx:key="{{index}}" data-idx="{{index}}">{{item}}</view>
  </view>
  <view class="dateBgView">
   <view wx:if="{{hasEmptyGrid}}" class="dateEmptyView" wx:for="{{empytGrids}}" wx:key="{{index}}" data-idx="{{index}}">
   </view>
   <view class="dateView" wx:for="{{days}}" wx:key="{{index}}" data-idx="{{index}}" bindtap="dateSelectAction">
    <view class="datesView {{index == todayIndex ? 'dateSelectView' : ''}}">{{item}}</view>
   </view>
  </view>
 </view>
 <view>点击日期选择</view>
</view>

js

//index.js
//获取应用实例
Page({
 data: {
  hasEmptyGrid: false,
  cur_year: '',
  cur_month: '',
 },
 onLoad(options) {
  this.setNowDate();
 },
 
 dateSelectAction: function (e) {
  var cur_day = e.currentTarget.dataset.idx;
  this.setData({
   todayIndex: cur_day
  })
  console.log(`点击的日期:${this.data.cur_year}年${this.data.cur_month}月${cur_day + 1}日`);
 },
 
 setNowDate: function () {
  const date = new Date();
  const cur_year = date.getFullYear();
  const cur_month = date.getMonth() + 1;
  const todayIndex = date.getDate() - 1;
  console.log(`日期:${todayIndex}`)
  const weeks_ch = ['日', '一', '二', '三', '四', '五', '六'];
  this.calculateEmptyGrids(cur_year, cur_month);
  this.calculateDays(cur_year, cur_month);
  this.setData({
   cur_year: cur_year,
   cur_month: cur_month,
   weeks_ch,
   todayIndex,
  })
 },
 
 getThisMonthDays(year, month) {
  return new Date(year, month, 0).getDate();
 },
 getFirstDayOfWeek(year, month) {
  return new Date(Date.UTC(year, month - 1, 1)).getDay();
 },
 calculateEmptyGrids(year, month) {
  const firstDayOfWeek = this.getFirstDayOfWeek(year, month);
  let empytGrids = [];
  if (firstDayOfWeek > 0) {
   for (let i = 0; i < firstDayOfWeek; i++) {
    empytGrids.push(i);
   }
   this.setData({
    hasEmptyGrid: true,
    empytGrids
   });
  } else {
   this.setData({
    hasEmptyGrid: false,
    empytGrids: []
   });
  }
 },
 calculateDays(year, month) {
  let days = [];
 
  const thisMonthDays = this.getThisMonthDays(year, month);
 
  for (let i = 1; i <= thisMonthDays; i++) {
   days.push(i);
  }
 
  this.setData({
   days
  });
 },
 handleCalendar(e) {
  const handle = e.currentTarget.dataset.handle;
  const cur_year = this.data.cur_year;
  const cur_month = this.data.cur_month;
  if (handle === 'prev') {
   let newMonth = cur_month - 1;
   let newYear = cur_year;
   if (newMonth < 1) {
    newYear = cur_year - 1;
    newMonth = 12;
   }
 
   this.calculateDays(newYear, newMonth);
   this.calculateEmptyGrids(newYear, newMonth);
 
   this.setData({
    cur_year: newYear,
    cur_month: newMonth
   })
 
  } else {
   let newMonth = cur_month + 1;
   let newYear = cur_year;
   if (newMonth > 12) {
    newYear = cur_year + 1;
    newMonth = 1;
   }
 
   this.calculateDays(newYear, newMonth);
   this.calculateEmptyGrids(newYear, newMonth);
 
   this.setData({
    cur_year: newYear,
    cur_month: newMonth
   })
  }
 }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
May 28 Javascript
jQuery的deferred对象使用详解
Aug 20 Javascript
如何正确使用javascript 来进行我们的程序开发
Jun 23 Javascript
JS实现倒计时和文字滚动的效果实例
Oct 29 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
js实现数组转换成json
Jun 26 Javascript
javascript实现加载xml文件的方法
Nov 24 Javascript
js定义类的几种方法(推荐)
Jun 08 Javascript
js实现常用排序算法
Aug 09 Javascript
深入理解基于vue-cli的vuex配置
Jul 24 Javascript
JS实现中英文混合文字溢出友好截取功能
Aug 06 Javascript
vue-cli项目使用mock数据的方法(借助express)
Apr 15 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
Dec 28 #Javascript
微信小程序时间控件picker view使用详解
Dec 28 #Javascript
微信小程序时间选择插件使用详解
Dec 28 #Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 #Javascript
Angular6新特性之Angular Material
Dec 28 #Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 #Javascript
小程序实现抽奖动画
Apr 16 #Javascript
You might like
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
处理单名多值表单的详解
2013/06/08 PHP
php汉字转拼音的示例
2014/02/27 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
PHP微信分享开发详解
2017/01/14 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
python操作cfg配置文件方式
2019/12/22 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
家长会演讲稿范文
2014/01/10 职场文书
安全协议书范本
2014/04/21 职场文书
10的分与合教学反思
2014/04/30 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
不同意离婚上诉状
2015/05/23 职场文书
详细聊聊浏览器是如何看闭包的
2021/11/11 Javascript
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技