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


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 相关文章推荐
Add Formatted Data to a Spreadsheet
Jun 12 Javascript
js 跳出页面的frameset框架示例介绍
Dec 23 Javascript
js实现的倒计时按钮实例
Jun 24 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
Aug 11 Javascript
js中遍历对象的属性和值的方法
Jul 27 Javascript
javascript滚轮事件基础实例讲解(37)
Feb 14 Javascript
js获取浏览器和屏幕的各种宽度高度
Feb 22 Javascript
angular中实现控制器之间传递参数的方式
Apr 24 Javascript
AngularJS实现的简单拖拽功能示例
Jan 02 Javascript
vue项目创建步骤及路由router
Jan 14 Javascript
Vue2.0 $set()的正确使用详解
Jul 28 Javascript
vue组件的路由高亮问题解决方法
May 11 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
UCenter Home二次开发指南
2009/05/28 PHP
劣质的PHP代码简化
2010/02/08 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
php学习笔记之基础知识
2014/11/08 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
用javascript获取textarea中的光标位置
2008/05/06 Javascript
javascript 简练的几个函数
2009/08/29 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
详解webpack分离css单独打包
2017/06/21 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
Python开发编码规范
2006/09/08 Python
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
详细分析Python collections工具库
2020/07/16 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
国际贸易个人求职信范文
2014/01/04 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
初中体育课教学反思
2016/02/16 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android