问题形容

工夫选择器抉择日期、月份在我的项目中比拟常见,比方查问历史记录,咱们须要抉择具体日期或者发申请,获取历史数据。所以咱们须要对工夫选择器做一些管制,比方历史记录查问的话,就不能抉择以后日期和当前的日期了。所以就须要把以后日期和将来日期给禁用掉,本文记录一下相应的代码写法。

应用饿了么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>
其实写法也是多样的,欢送大家独特交流学习,共同进步