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


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 相关文章推荐
Safari5中alert的无限循环BUG
Apr 07 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
Oct 14 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
Nov 12 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
js 判断js函数、变量是否存在的简单示例代码
Mar 04 Javascript
JavaScript中的类与实例实现方法
Jan 23 Javascript
在线所见即所得HTML编辑器的实现原理浅析
Apr 25 Javascript
javaScript实现可缩放的显示区效果代码
Oct 26 Javascript
Jquery实现上下移动和排序代码
Oct 17 Javascript
AngularJs 终极购物车(实例讲解)
Nov 08 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
Oct 14 Javascript
原生JavaScript实现随机点名表
Jan 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
可以在线执行PHP代码包装修正版
2008/03/15 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
详解在React-Native中持久化redux数据
2019/05/22 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
python实现支付宝转账接口
2019/05/07 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
python计算导数并绘图的实例
2020/02/29 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
事业单位辞职信范文
2014/01/19 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
前台岗位职责
2015/02/13 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android