element-ui限制开始日期和结束日期

一、需求

  • 开始时间
  • 限制开始时间不能为空
  • 开始时间不能小于当前时间
  • 结束时间
  • 限制结束时间不能为空
  • 结束时间不能小于开始时间

二、分析

看了很多方法都是通过:picker-options禁用选项,很难完全控制日期时间控件的选择,有很多BUG,比如限制选择今天但是点击此刻可以更改时分秒,onChange弹出message又和表单不太相符,最后决定用自定义效验解决。

三、效验代码

表单代码

        <el-form-item label="直播开始时间" prop="startTime">
          <el-date-picker clearable size="small"
                          v-model.trim="form.startTime"
                          type="datetime"
                          value-format="yyyy-MM-dd HH:mm:ss"
                          placeholder="选择开始时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="直播结束时间" prop="endTime">
          <el-date-picker clearable size="small"
                          v-model.trim="form.endTime"
                          type="datetime"
                          value-format="yyyy-MM-dd HH:mm:ss"
                          placeholder="选择结束时间"
          >
          </el-date-picker>
        </el-form-item>

 自定义效验代码

          startTime: [
            { required: true,  trigger: "blur" ,validator: startTimeRule, }
          ],
          endTime: [
            { required: true,  trigger: "blur" ,validator: endTimeRule,}
          ],

自定义效验函数

data() {
      let startTimeRule = (rule, value, callback) => {
        if (!value) {
          return callback(new Error('开始时间不能为空'));
        }
          let currentTime = new Date();
          let time=this.form.startTime;
          time= time.replace("-","/");//替换字符,变成标准格式
          time= new Date(Date.parse(time));
          if(time < currentTime) {
            return callback(new Error('开始时间不能小于当前时间'));
            // this.$message.error("开始时间不能小于当前时间")
            this.form.startTime=null
          }else{
            callback();
          }
      };
      let endTimeRule = (rule, value, callback) => {
        if (!value) {
          return callback(new Error('结束时间不能为空'));
        }else{
          let startTime=this.form.startTime;
          startTime= startTime.replace("-","/");//替换字符,变成标准格式
          startTime= new Date(Date.parse(startTime));
          let endTime=this.form.endTime;
          endTime= endTime.replace("-","/");//替换字符,变成标准格式
          endTime= new Date(Date.parse(endTime));
          if(endTime < startTime) {
            return callback(new Error('结束时间不能小于开始时间'));
            // this.$message.error("结束时间不能小于开始时间")
            this.form.endTime=null
          }else{
            callback();
          }
        }

      };
  }

四、效果演示

开始时间限制

结束时间限制

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
element-ui日期选择器组件el-date-picker可以通过picker-options属性来控制日期选择的范围。\[1\]在使用el-date-picker组件时,可以通过设置picker-options属性来限制日期的选择范围。例如,可以设置最小日期和最大日期限制选择的范围。具体的使用方法可以参考官方文档中的示例代码。\[1\]在代码中,可以通过设置picker-options属性来指定日期的选择范围。例如,可以设置minDate和maxDate来限制选择的范围。\[2\]另外,还可以使用start-placeholder和end-placeholder属性来设置日期选择器的起始日期结束日期的占位符文本。\[3\] #### 引用[.reference_title] - *1* *3* [Element-UI:el-date-picker里的picker-options——用来限制选择日期的范围](https://blog.csdn.net/xwh19961210/article/details/114400397)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Element-UI日期选择器el-date-picker给指定日期添加红点标注](https://blog.csdn.net/weixin_43220182/article/details/128821693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南归北隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值