问题形容
工夫选择器抉择日期、月份在我的项目中比拟常见,比方查问历史记录,咱们须要抉择具体日期或者发申请,获取历史数据。所以咱们须要对工夫选择器做一些管制,比方历史记录查问的话,就不能抉择以后日期和当前的日期了。所以就须要把以后日期和将来日期给禁用掉,本文记录一下相应的代码写法。
应用饿了么UI必定是要用官网给到的api,这里咱们应用的是picker-options和disabledDate去管制,附上官网文档地址链接: https://element.eleme.cn/#/zh...
禁用日期案例
效果图
代码如下
<template> <div id="app"> <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" placeholder="请抉择日期" v-model="dayDate" :picker-options="setDisabled" ></el-date-picker> </div></template><script>export default { data() { return { timer: null, dayDate: "", setDisabled: { disabledDate(time) { return time.getTime() > Date.now(); // 可选历史天、可选以后天、不可选将来天 // return time.getTime() > Date.now() - 8.64e7; // 可选历史天、不可选以后天、不可选将来天 // return time.getTime() < Date.now() - 8.64e7; // 不可选历史天、可选以后天、可选将来天 // return time.getTime() < Date.now(); // 不可选历史天、不可选以后天、可选将来天 }, }, }; }, /* 8.64e7 是迷信计数法 8.64乘以10的7次方,即为86400000也就是 1000*60*60*24 也就是一天的毫秒数。因为Date.now() 办法可能返回失去自1970年1月1日00:00:00(UTC)到以后工夫的毫秒数。咱们是北京工夫的时区,也就是为东8区, 终点工夫对应就是:"1970/01/01 08:00:00" picker-options须要一个最终的布尔值,所以是否减去8.64e7也就是是否往前推移一天,也就是是否蕴含以后的天数 */};</script><style lang="less" scoped>#app { width: 950px; height: 600px; box-sizing: border-box; margin: 50px;}</style>
禁用日期简略,上面咱们说一下禁用月份,禁用月份须要对日期格局做一个转换并判断即可
禁用月份案例
效果图
代码如下
<template> <div id="app"> <el-date-picker v-model="value" format="yyyy-MM" value-format="yyyy-MM" type="month" placeholder="请抉择月份" :picker-options="setMonthDisabled" > </el-date-picker> </div></template><script>export default { data() { return { value: "", setMonthDisabled: { disabledDate(time) { // 获取以后的月份信息 const date = new Date(); // 获取以后的工夫根本信息,值是这样的: Tue Jul 20 2021 14:59:43 GMT+0800 (中国规范工夫) const year = date.getFullYear(); // 获取以后年份,值是这样的: 2021 let month = date.getMonth() + 1; // 获取以后月份,值是这样的: 6 getMonth()办法返回值是0-11,也就是1月份到12月份,所以要加上1,才是以后月份 if (month >= 1 && month <= 9) { // 如果是1月到9月就要在后面补上一个0 比方:02、07 月份这样示意 month = "0" + month; } const nowDate = year.toString() + month.toString(); // 转换成字符串拼接,最终失去年和月,比方此时的工夫是2021年7月20号,所以nowDate的值是:202107 // 获取工夫选择器的月份信息 const timeyear = time.getFullYear(); // 获取工夫选择器的年份(有很多) let timemonth = time.getMonth() + 1; // 与下面同理 if (timemonth >= 1 && timemonth <= 9) { timemonth = "0" + timemonth; } const elTimeData = timeyear.toString() + timemonth.toString(); // 返回,工夫选择器的日期月份大于以后日期的月份,又因为disabledDate函数是管制月份禁用不可选 // 所以,最终就是:工夫选择器的月份大于以后的月份,就都禁用掉,所以就实现了最终成果: // 大于等于以后月份都不可选 return elTimeData <= nowDate; // 这里尽管是字符串,然而弱类型语言js会做一个转换,是能够比拟大小的如: '202107' > '202008' }, }, }; }, methods: {},};</script><style lang="less" scoped>#app { width: 950px; height: 600px; box-sizing: border-box; margin: 50px;}</style>
其实写法也是多样的,欢送大家独特交流学习,共同进步