当前位置:   article > 正文

element ui datePick时间日期一段时间,限制选择日期的范围_element ui日期选择器限制范围

element ui日期选择器限制范围

 时间戳,一天

  1. let oneDayTime = 86400000
  2. function timeSec(type) {
  3. //86400000为一天时间戳
  4. let time = 86400000;
  5. switch (type) {
  6. case "1":
  7. time = oneDayTime*3;
  8. break;
  9. case "2":
  10. time = oneDayTime*31;
  11. break;
  12. case "3":
  13. time = oneDayTime*365;
  14. break;
  15. case "4":
  16. time = oneDayTime*365;
  17. break;
  18. default:
  19. break;
  20. }
  21. return time;
  22. }

想限制只能选日期间隔为一年,联合选择器样式不好改,使用俩单独的

有两个办法限制

1.一个在外层使用form通过表单验证控制,出现错误提示(由于是两个单独的组件,触发验证的方式又为单个失去焦点,所以俩组件无法实时更新)

2.用datepick自带的属性disabledDate ,为pick-options中的函数,在js中绑定函数,通过控制区间禁选不符合条件的日期,触发方式在每次选择时间时,可以实时更新无错误提示

1.form实现

  1. form-html
  2. <el-form ref="queryForm" :model="queryParams" inline>
  3. <el-form-item
  4. prop="startDate"
  5. :rules="[
  6. { required: true, message: '请选择开始日期' },
  7. { validator: checkFinalPayTime, trigger: 'blur' },
  8. ]"
  9. >
  10. <el-date-picker
  11. v-model="queryParams.startDate"
  12. :clearable="false"
  13. type="date"
  14. :default-value="new Date()"
  15. :disabledDate="disabledStartDate"
  16. :value-format="YYYY - MM - DD"
  17. placeholder="开始时间"
  18. />
  19. </el-form-item>
  20. <el-form-item
  21. prop="endDate"
  22. :rules="[
  23. { required: true, message: '请选择开始日期' },
  24. { validator: checkFinalPayTime, trigger: 'blur' },
  25. ]"
  26. >
  27. <el-date-picker
  28. v-model="queryParams.endDate"
  29. :clearable="false"
  30. type="date"
  31. :disabledDate="disabledEndDate"
  32. :default-value="new Date()"
  33. :value-format="YYYY - MM - DD"
  34. placeholder="结束时间"
  35. />
  36. </el-form-item>
  37. <el-form-item>
  38. <el-button type="primary" icon="Search" @click="search"> 查询 </el-button>
  39. <el-button icon="Refresh" @click="reset"> 重置 </el-button>
  40. </el-form-item>
  41. </el-form>
  1. form-js
  2. //form验证函数,触发后更改另一个验证错误不会消失
  3. const checkFinalPayTime = (rule, value, callback) => {
  4. const startDate = new Date(proxy.queryParams.startDate).getTime();
  5. const endDate = new Date(proxy.queryParams.endDate).getTime();
  6. console.log(startDate, endDate);
  7. console.log(startDate + 31536000000 > endDate);
  8. if (startDate + 31536000000 < endDate) {
  9. return callback(new Error("起止日期不能超过一年"));
  10. } else {
  11. callback();
  12. }
  13. };

2.代码实现

  1. disabledDate-html
  2. <el-form ref="queryForm" :model="queryParams" inline>
  3. <el-date-picker
  4. v-model="queryParams.startDate"
  5. :clearable="false"
  6. type="date"
  7. :default-value="new Date()"
  8. :disabledDate="disabledStartDate"
  9. :value-format="YYYY - MM - DD"
  10. placeholder="开始时间"
  11. />
  12. <el-date-picker
  13. v-model="queryParams.endDate"
  14. :clearable="false"
  15. type="date"
  16. :disabledDate="disabledEndDate"
  17. :default-value="new Date()"
  18. :value-format="YYYY - MM - DD"
  19. placeholder="结束时间"
  20. />
  21. </el-form>
  1. disabledDate-js
  2. const disabledStartDate = (time) => {
  3. const endDate = new Date(proxy.queryParams.endDate);
  4. //该函数会遍历整个页,time为该选择页中日期的时间,
  5. //returnfalse表示该日期可选,true则为不可选
  6. return (
  7. time.getTime() < endDate.getTime() - 31536000000 ||
  8. time.getTime() > endDate.getTime()
  9. );
  10. };
  11. const disabledEndDate = (time) => {
  12. const startDate = new Date(proxy.queryParams.startDate);
  13. //该函数会遍历整个页,time为该选择页中日期的时间,
  14. //returnfalse表示该日期可选,true则为不可选
  15. return (
  16. time.getTime() > startDate.getTime() + 31536000000 ||
  17. time.getTime() < startDate.getTime()
  18. );
  19. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/390654?site
推荐阅读
相关标签
  

闽ICP备14008679号