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


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 相关文章推荐
div模拟滚动条效果示例代码
Oct 16 Javascript
js实现在字符串中提取数字
Nov 05 Javascript
jQuery的图片滑块焦点图插件整理推荐
Dec 07 Javascript
浅析javascript函数表达式
Feb 10 Javascript
学习vue.js条件渲染
Dec 03 Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 Javascript
js+html5实现复制文字按钮
Jul 15 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
Sep 19 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
Sep 04 Javascript
微信小程序 如何保持登录状态
Aug 16 Javascript
vue使用screenfull插件实现全屏功能
Sep 17 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
Smarty安装配置方法
2008/04/10 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
分页栏的web标准实现
2011/11/01 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
Vue自定义指令详解
2017/07/28 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
python解决字典中的值是列表问题的方法
2013/03/04 Python
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
软件测试面试题
2014/01/05 面试题
卫校中专生的自我评价
2014/01/15 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
商业项目策划方案
2014/06/05 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
教师个人年终总结
2015/02/11 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js