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


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中的作用域和闭包问题
Jul 07 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 Javascript
js实现仿Discuz文本框弹出层效果
Aug 13 Javascript
jQuery模拟select实现下拉菜单功能
Jun 20 Javascript
JavaScript获取中英文混合字符串长度的方法示例
Feb 04 Javascript
jQuery 表单序列化实例代码
Jun 11 jQuery
Async Validator 异步验证使用说明
Jul 03 Javascript
JavaScript实现图片无缝滚动效果
Jul 07 Javascript
vue项目首屏加载时间优化实战
Apr 23 Javascript
Vue数据绑定简析小结
May 07 Javascript
vue实现路由监听和参数监听
Oct 29 Javascript
vue实现商品列表的添加删除实例讲解
May 14 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 xml文件操作代码(一)
2009/03/20 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
Javascript Global对象
2009/08/13 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
JavaScript异步加载问题总结
2018/02/17 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
js实现弹窗效果
2020/08/09 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
Python实现的ini文件操作类分享
2014/11/20 Python
python通过文件头判断文件类型
2015/10/30 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
极简的HTML5模版
2015/07/09 HTML / CSS
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
大学班级计划书
2014/04/29 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书