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


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 相关文章推荐
非常好的js代码
Jun 27 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
Jun 15 Javascript
JS解析XML实例分析
Jan 30 Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 Javascript
jQuery实现自动输入email、时间和域名的方法
Aug 24 Javascript
详解通过JSON数据使用VUE.JS
May 26 Javascript
angular4中关于表单的校验示例
Oct 16 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
vue项目如何刷新当前页面的方法
May 18 Javascript
小程序tab页无法传递参数的方法
Aug 03 Javascript
vue-property-decorator用法详解
Dec 12 Javascript
vue完美实现el-table列宽自适应
May 08 Vue.js
解决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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python 实现目录复制的三种小结
2019/12/04 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
承诺书模板
2014/08/30 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis