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


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 相关文章推荐
html数组字符串拼接的最快方法
Sep 16 Javascript
JavaScript Array扩展实现代码
Oct 14 Javascript
js 上下左右键控制焦点(示例代码)
Dec 14 Javascript
JavaScript Array对象扩展indexOf()方法
May 09 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
jQuery功能函数详解
Feb 01 Javascript
JavaScript实现把数字转换成中文
Jun 29 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
浅析javascript中的事件代理
Nov 06 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
详解使用vuex进行菜单管理
Dec 21 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
Jul 20 Javascript
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中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
Discuz 模板引擎的封装类代码
2008/07/18 PHP
浅谈php扩展imagick
2014/06/02 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
详解angular element()方法使用
2017/04/08 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
ubuntu上安装python的实例方法
2019/09/30 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
Python如何定义接口和抽象类
2020/07/28 Python
python关于倒排列的知识点总结
2020/10/13 Python
中专毕业生自我鉴定
2013/11/21 职场文书
工作失职检讨书范文
2014/01/16 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
政协委员个人总结
2015/03/03 职场文书
地道战观后感
2015/06/04 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python
分享7个 Python 实战项目练习
2022/03/03 Python
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android