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


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 相关文章推荐
一个用js实现控制台控件的代码
Sep 04 Javascript
Prototype源码浅析 Enumerable部分(二)
Jan 18 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
Aug 06 Javascript
关于js遍历表格的实例
Jul 10 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
微信小程序开发经验总结(推荐)
Jan 11 Javascript
通过js控制时间,一秒一秒自己动的实例
Oct 25 Javascript
Swiper自定义分页器使用详解
Dec 28 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
vue中使用element组件时事件想要传递其他参数的问题
Sep 18 Javascript
通过滑动翻页效果实现和移动端click事件问题
Jan 26 Javascript
js 实现验证码输入框示例详解
Sep 23 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 中的类
2006/10/09 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
python3中eval函数用法使用简介
2019/08/02 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
python如何实现复制目录到指定目录
2020/02/13 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
Python实现自动整理文件的脚本
2020/12/17 Python
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
中专生自荐信
2013/10/12 职场文书
建筑公司文秘岗位职责
2013/11/29 职场文书
中专生自我鉴定
2013/12/17 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js