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


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在一段文字中的光标处插入其他文字
Aug 26 Javascript
JavaScript传递变量: 值传递?引用传递?
Feb 22 Javascript
window.addEventListener来解决让一个js事件执行多个函数
Dec 26 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
最原始的jQuery注册验证方式
Oct 11 Javascript
JavaScript下拉菜单功能实例代码
Mar 01 Javascript
Angular组件化管理实现方法分析
Mar 17 Javascript
Vue.js实现一个todo-list的上移下移删除功能
Jun 26 Javascript
Vue实现动态创建和删除数据的方法
Mar 17 Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 Javascript
vxe-table vue table 表格组件功能
May 26 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
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实现的简易扫雷游戏实例
2015/07/09 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
javascript实现的listview效果
2007/04/28 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
python网络编程之读取网站根目录实例
2014/09/30 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
Python中qutip用法示例详解
2020/10/02 Python
python打包生成so文件的实现
2020/10/30 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
师范毕业生自荐信
2013/10/17 职场文书
机械绘图员岗位职责
2013/11/19 职场文书
员工培训邀请函
2014/02/02 职场文书
开业典礼主持词
2014/03/21 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
个人委托书
2014/07/31 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
优秀员工自荐书
2015/03/06 职场文书
三八节活动简报
2015/07/20 职场文书
大学生受助感言
2015/08/01 职场文书
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技