elementui实现日期和时间的选择

本文档详细介绍了如何在Vue项目中利用ElementUI组件库的el-date-picker和el-time-picker实现日期和时间的选择功能。通过设置pickerOptions限制选择范围,并在数据回显时处理时间显示问题,确保时间和日期的正确拼接。在遇到el-time-picker选值不更新的bug时,通过$set方法解决了页面显示问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

elementui实现日期和时间的选择

需求:在项目中期望实现一个日期和时间的选择器(两个框),时间点默认设置为23:59;如下图

在这里插入图片描述

实现过程

一、引入elementui的el-date-picker和el-time-picker

<el-form-item label="截止时间:" prop="tenderTime">
    <el-date-picker
        v-model="ruleForm.tenderTime"
        type="date"
        placeholder="选择日期"
        value-format="yyyy-MM-dd"
        :editable="false"
        :picker-options="pickerOptions"
    >
    </el-date-picker>
    <el-time-picker
        v-model="ruleForm.timePoint"
        placeholder="选择时间"
        :editable="false"
        format='HH:mm'     
        value-format="HH:mm" 
        @change="changTimePoint" 
    >
    </el-time-picker>
</el-form-item>

二、在data里面限制

 pickerOptions: {
// 时间不让选择今天以前的
    disabledDate(time) {
        return time.getTime() < Date.now() - 24* 60 * 60 * 1000
    },
    ruleForm: 
        tenderTime: "",
        timePoint:"23:59",//设置初始值
    },
},

三、在点击下一步校验表单成功后并拼接日期和时间

this.ruleForm.tenderTime=this.ruleForm.tenderTime+" "+this.ruleForm.timePoint
小插曲

至此,上面的需求已基本实现,但在调试的时候还有一个问题,数据回显的时候el-time-picker赋值后可以重新选值但没办法展示在页面上(选择时页面上值不变但传给后端的值是所选的),解决办法如下:在调接口回显数据的时候做如下处理:

 if(this.backForm.tenderTime.indexOf(" ") != -1){  
    this.$set(this.backForm,"timePoint",this.backForm.tenderTime.split(' ')[1])
    this.$set(this.backForm,"tenderTime",this.backForm.tenderTime.split(' ')[0])
    // this.backForm.timePoint=this.backForm.tenderTime.split(' ')[1]
    // this.backForm.tenderTime=this.backForm.tenderTime.split(' ')[0]
}
this.ruleForm=this.backForm;

原因:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新,回显接口里没有timepoint这个字段,所以要用通过$set来重新去赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值