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


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 相关文章推荐
Javascript 两个窗体之间传值实现代码
Sep 25 Javascript
javascript 处理事件绑定的一些兼容写法
Dec 24 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
Apr 26 Javascript
动态加载脚本提升javascript性能
Feb 24 Javascript
使用jQuery动态加载js脚本文件的方法
Apr 03 Javascript
理解js对象继承的N种模式
Jan 25 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
DIV+CSS+jQ实现省市联动可扩展
Jun 22 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 Javascript
AngularJS中$apply方法和$watch方法用法总结
Dec 13 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
对Angular中单向数据流的深入理解
Mar 31 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
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python实现跨文件全局变量的方法
2014/07/07 Python
Python入门学习之字符串与比较运算符
2015/10/12 Python
Python函数中的函数(闭包)用法实例
2016/03/15 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
Python根据服务获取端口号的方法
2019/09/25 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
JAVA程序员面试题
2012/10/03 面试题
化工工艺专业求职信
2013/09/22 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
好媳妇事迹材料
2014/12/24 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
小学运动会加油词
2015/07/18 职场文书
行为习惯主题班会
2015/08/14 职场文书
任命书格式范文
2015/09/22 职场文书
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
vue 自定义组件添加原生事件
2022/04/21 Vue.js