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


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 相关文章推荐
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
JS操作数据库的实例代码
Oct 17 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
Oct 21 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
详解JavaScript编程中的数组结构
Oct 24 Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 Javascript
javascript 动态样式添加的简单实现
Oct 11 Javascript
jQuery网页定位导航特效实现方法
Dec 19 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 Javascript
JS高级技巧(简洁版)
Jul 29 Javascript
Javascript实现简易天数计算器
May 18 Javascript
如何使用JS console.log()技巧提高工作效率
Oct 14 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
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
PHP 实现缩略图
2021/03/09 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
Python注释详解
2016/06/01 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
学习python分支结构
2019/05/17 Python
详解python编译器和解释器的区别
2019/06/24 Python
python基于递归解决背包问题详解
2019/07/03 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
体育口号大全
2014/06/18 职场文书
2014年工会工作总结
2014/11/12 职场文书
运动会开幕词
2015/01/28 职场文书
工作能力自我评价2015
2015/03/05 职场文书
让子弹飞观后感
2015/06/11 职场文书
教师节联欢会主持词
2015/07/04 职场文书
团结友爱主题班会
2015/08/13 职场文书
责任书格式
2019/04/18 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers