微信小程序的日期选择器的实例详解


Posted in Javascript onSeptember 29, 2017

微信小程序的日期选择器的实例详解

前言:

关于微信小程序中的日期选择器大家用过都会发现有个很大的问题,就是在2月的时候会有31天,没有进行对闰年的判断等各种情况。看了官方文档提供的源码后进行了一些修改,测试修复了上面所说的bug!

下面源码:

<!---js---》

const date = 
new Date();//获取系统日期

const years = []

const months = []

const days = []

const bigMonth = [1,3,5,7,8,10,12]



//将日期分开写入对应数组



//年

for (let i =
1990; i <= date.getFullYear(); i++) {

years.push(i);

}



//月

for (let i =
1; i <= 12; i++) {

months.push(i);

}



//日

for (let i =
1; i <= 31; i++) {

days.push(i);

}





Page({



/**

* 页面的初始数据

*/

data: {

years: years,

year: date.getFullYear(),

months: months,

month: 2,

days: days,

day: 2,

value: [9999, 
1, 1],

},

showToask: function() {

wx.showToast({

title: '成功',

icon: 'success',

duration: 2000

})

},

//判断元素是否在一个数组

contains: function(arr, obj) {

var i = arr.length;

while(i--) {

if (arr[i] === obj) {

return true;

}

}

return false;

},

setDays: function (day) {

const temp = [];

for(let i =1; i<=day; i++) {

temp.push(i)

}

this.setData({

days: temp,

})

},



showLoading: function () {

wx.showLoading({

title: '加载中...',

}),

setTimeout(function () {

wx.hideLoading()

},2000)

},

//选择滚动器改变触发事件

bindChange: function (e) {

const val = e.detail.value;

//判断月的天数

const setYear = 
this.data.years[val[0]];

const setMonth = 
this.data.months[val[1]];

const setDay = 
this.data.days[val[2]]

// console.log(setYear + '年' + setMonth + '月' + setDay + '日');

//闰年

if (setMonth === 
2) {

if (setYear % 
4 === 0 && setYear % 
100 !== 0) {

// console.log('闰年')

this.setDays(28);

} else {

// console.log('非闰年')

this.setDays(29);

}

}else {

//大月

if (this.contains(bigMonth, setMonth)){

this.setDays(31)

}else {

this.setDays(30)

}

}

this.setData({

year: setYear,

month: setMonth,

day: setDay

})

}


})

<!---wxml--->

与官方文档是一样的!

<view 
style='text-align:center;margin-top:30px;'>{{year}}年{{month}}月{{day}}日</view>

<picker-view
indicator-style="height:50px;"
style='width:100%;height:300px;text-align:center'
value="{{value}}"
bindchange="bindChange">

<picker-view-column>

<view 
wx:for="{{years}}" 
wx:key="year" 
style='line=height:50px;'>

{{item}}年

</view>

</picker-view-column>

<picker-view-column>

<view 
wx:for="{{months}}" 
wx:key="month">

{{item}}月

</view>

</picker-view-column>

<picker-view-column>

<view 
wx:for="{{days}}" 
wx:key="day">

{{item}}日

</view>

</picker-view-column>

</picker-view>

</view>

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
javascript调试说明
Jun 07 Javascript
文本框根据输入内容自适应高度的代码
Oct 24 Javascript
Javascript访问器属性实例分析
Dec 30 Javascript
JS动态增删表格行的方法
Mar 03 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
Mar 24 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
Sep 17 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
JS实现Ajax的方法分析
Dec 20 Javascript
AngularJS2中一种button切换效果的实现方法(二)
Mar 27 Javascript
jquery append与appendTo方法比较
May 24 jQuery
Vue全局事件总线你了解吗
Feb 24 Vue.js
JS设计模式之惰性模式(二)
Sep 29 #Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
Aug 09 #Javascript
详解用Node.js实现Restful风格webservice
Sep 29 #Javascript
实现一个完整的Node.js RESTful API的示例
Sep 29 #Javascript
jquery鼠标悬停导航下划线滑出效果
Sep 29 #jQuery
vue axios同步请求解决方案
Sep 29 #Javascript
IntersectionObserver实现图片懒加载的示例
Sep 29 #Javascript
You might like
PHP读取MySQL数据代码
2008/06/05 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
jquery checkbox实现单选小例
2013/11/27 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
python 表格打印代码实例解析
2019/10/12 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
护理学专业推荐信
2013/12/03 职场文书
国贸专业个人求职信分享
2013/12/04 职场文书
仓库理货员岗位职责
2013/12/18 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
大学生逃课检讨书
2015/05/04 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL