el-date-picker 如何限制所选的时间不能小于当前时间?

需求背景:
需要所选时间不得小于当前时间,当前好像只能限制到日期,只能限制到时和分,不能精确到秒

相关代码
html:

  <el-date-picker
      v-model="dialogForm.splitTime"
      type="datetime"
      value-format='yyyy-MM-dd HH:mm:ss'
      :picker-options="pickerOptions"
      format="yyyy-MM-dd HH:mm:ss"
      placeholder="请选择预约分裂时间">
    </el-date-picker>

data

 pickerOptions: {
                disabledDate(time) {
                    return time.getTime() < Date.now() - 8.64e7 // 当前时间的前一天
                },
                selectableRange: ""
            },

created

this.dialogForm.splitTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
        const currentTime = dayjs().format('HH:mm:ss');
        this.pickerOptions.selectableRange = `${currentTime} - 23:59:59`

演示

方案思路:1. 当打开弹框时,获取当前时间的时分秒,对selectableRange初始化赋值;

     2.  当选择的日期大于当前日期时。对selectableRange放开限制
     

问题点:可以将时分禁用,但是不能将秒禁用,之前的秒级别仍然可以选择。

阅读 4.4k
2 个回答

可以看看这个实现:

data() {
  return {
    dialogForm: {
      splitTime: ""
    },
    pickerOptions: {
      disabledDate(time) {
        return time.getTime() < Date.now() - 8.64e7; // 当前时间的前一天
      },
      selectableRange: "",
      onPick: (date) => {
        const selectedDate = dayjs(date.date);
        const now = dayjs();
        if (selectedDate.format("YYYY-MM-DD") === now.format("YYYY-MM-DD")) {
          const currentTime = now.format("HH:mm:ss");
          this.pickerOptions.selectableRange = `${currentTime} - 23:59:59`;
        } else {
          this.pickerOptions.selectableRange = "00:00:00 - 23:59:59";
        }
      }
    }
  };
},
created() {
  this.dialogForm.splitTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
  const currentTime = dayjs().format("HH:mm:ss");
  this.pickerOptions.selectableRange = `${currentTime} - 23:59:59`;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题