Element Ui 日期选择器 范围限制

一个日期选择器的范围限制

// el-date-picker
<el-date-picker
       v-model="value"
       type="date" 
       placeholder="选择日期"
       :picker-options="pickerOptions"> //
</el-date-picker>

	// 选择 今天或以后的日期(不包含今天则去掉下面 - 8.64e7)
	pickerOptions: {
         disabledDate(time) {
            return time.getTime() < Date.now() - 8.64e7;
          }
       },  
    // 选择 今天或以前的日期(不包含今天则去掉下面 - 8.64e6)
    pickerOptions: {
         disabledDate(time) {
            return time.getTime() > Date.now() - 8.64e6;
          }
       }, 

两个日期选择器的范围限制

<el-date-picker
       v-model="value1"
       type="date"
       placeholder="开始日期"
       :picker-options="pickerOptions0">
</el-date-picker>
<el-date-picker
       v-model="value2"
       type="date"
       placeholder="结束日期"
       :picker-options="pickerOptions1">
</el-date-picker>

// 结束日期不能大于开始日期,可以为今天
// 注: 结束时间最大只能为今天,开始时间只能小于或等于结束时间,
// 如果开始时间为今天,结束时间只能为今天
  pickerOptions0: {
     disabledDate: (time) => {
       if (this.value2) {
         return time.getTime() > Date.now() || time.getTime() > this.value2;
       } else {
            return time.getTime() > Date.now();
        }
      }
   },
   pickerOptions1: {
      disabledDate: (time) => {
         return time.getTime() < this.value1 || time.getTime() > Date.now();
      }
   }
  // 在我们项目中用的最多的是这种
  // 结束日期不能大于开始日期,可以为今天
  // 先开始时间,判断为今天或以前,在结束时间,则结束时间大于等于开始时间
  // 先结束时间,判断为今天或以后,在开始时间,则开始时间小于等于结束时间
  pickerOptions0: {
        disabledDate: (time) => {
            if (this.value2) {
              return time.getTime() > this.value2
            } else {
              return time.getTime() > Date.now()
            }
          }
        },
  pickerOptions1: {
        disabledDate: (time) => {
            if (this.value2) {
              return time.getTime() < this.value1
            }
            return time.getTime() < Date.now()
          }
        }, 
value-format

value-format属性是改变v-model上值的格式

	value-format="yyyy-MM-dd" //2018-12-27
	value-format="yyyy-MM-dd HH:mm:ss" //2018-12-27 00:00:00
	value-format="timestamp" // 1483326245000

我们最后获取的值都是要传给后台的,所以,我们需要value-format这个属性
假如后台需要的是是 2018-12-27 格式
添加 value-format="yyyy-MM-dd"
会发现验证里加了v-model值的验证都无效了
其实很好解决,判断的依据是13位的时间戳,所以我们需要把验证里的v-model的值替换成13时间戳就可以了.当然你也可以改为 value-format=“timestamp” 也行(这需要考虑之后传值的转换)

在这推荐一个插件 moment,一个操作时间的插件,有兴趣可以去了解一下

GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45 7 个月前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 7 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐