2021/08/24 elementui DateTimePicker日期选择器 不能选择当前时间之前

本文探讨了在用户表单中如何使用饿了么DateTimePicker插件限制时间选择,提供了三种方法来确保时间范围仅限于当前时间之后。第一种方法通过验证和提示优化,但触发时机有误;第二种方法实时替换过早时间;第三种尝试禁用未来时分秒,但存在局限。寻求禁用特定时间点后的时分秒选择建议。

背景
–用户表单选择未来动作时,限定一个时间范围,只能选择当前时间之后的日期

–用的饿了么 DateTimePicker插件,日期范围的控制好实现,但是时间范围一直没解决,弄了三种方法,都有瑕疵

在这里插入图片描述


解决方法
1.最优选项:日期OK,时间范围给提示

–*核心代码

//表单 template
<el-form :model="form" :rules="rules" ref="form">
        <el-form-item label="活动开始时间(开始前活动不可见)" prop="startTime">
          <el-date-picker
            v-model="form.startTime"
            type="datetime"
            :picker-options="pickerOptions"
          ></el-date-picker>
        </el-form-item>
</el-form>

//data这里写验证规则
var validateDate = (rule, value, callback) => {
      if (value) {
        let start = new Date(this.form.startTime).getTime();
        if (start < Date.now()) {
          callback(new Error("开始时间要大于当前时间"));
          console.log("333");
          //这样直接更新是没有提示的
  
在 Vue 2 和 Element UI 中,你可以通过 `el-date-picker` 组件提供的属性来限制用户只能选择当前时间之后的时间。同时可以结合表单验证功能来进行进一步的校验。 ### 实现步骤: #### 1. 安装依赖 如果你还没有安装 `element-ui` 可以先通过 npm 或者 yarn 来安装它: ```bash npm install element-ui -S ``` 或者 ```bash yarn add element-ui ``` #### 2. 引入组件并设置禁选范围 接下来可以在你的页面里引入所需的 Date Picker 组件,并配置其 `picker-options` 属性,利用 `disabledDate` 函数来自定义不可选项。 示例如下: ```html <template> <div id="app"> <!-- 使用 el-form 包裹整个输入框方便做整体样式调整 --> <el-form :model="ruleForm" :rules="rules" ref="ruleForm"> <el-form-item label="请选择日期:" prop="dateAndTime"> <el-date-picker v-model="ruleForm.dateAndTime" type="datetime" placeholder="选择日期时间" format="yyyy-MM-dd HH:mm:ss" value-format="timestamp" :picker-options="pickerOptions" ></el-date-picker> </el-form-item> <el-button @click.prevent="submit">提交</el-button> </el-form> </div> </template> <script> export default { data() { return { ruleForm: { dateAndTime: '' }, // 校验规则 rules: { dateAndTime: [ { required: true, message: '请选择有效日期', trigger: ['blur','change'] } ] }, pickerOptions: { disabledDate(time) { // 禁用今天之前的所有天数 const now = new Date().getTime(); return time.getTime() < now; } } }; }, methods:{ submit(){ this.$refs.ruleForm.validate((valid)=>{ if(valid){ console.log('提交成功'); } else{ console.error("验证失败"); return false; } }); } } }; </script> ``` 在这个例子中我们做了几件事情: - 设置了 `v-model` 绑定到数据模型上; - 配置 `type="datetime"` 表明这是一个包含时间和日期的选择器; - 利用 `format` 指令指定显示格式为 "年-月-日 小时:分钟:秒"; - `value-format="timestamp"` 让绑定值变为 Unix 时间戳形式; - 最重要的是,在 `pickerOptions` 内部使用 `disabledDate()` 回调函数禁止选择早于现在时刻的日历项; 此外还加入了简单的必填字段验证逻辑当点击按钮时触发验证流程如果所有条件都满足则打印出“提交成功”反之给出提示信息。 以上就是如何在一个基于Vue.js的应用程序中集成Element UI 的 DateTimePicker 并阻止过去时间段被选取的方法概述啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值