elmentplus中el-date-picker实现禁选与默认显示

本文展示了如何在Vue.js应用中配置el-date-picker组件,用于选择日期范围并限制可选日期。通过`disabledDate`函数禁止选择前三个月之前的日期,同时设置了默认显示为最近三个月的时间范围。`defaultTime`用于设定默认时间,`threeBefore`函数计算前三个月的日期。

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

template

<el-date-picker 
 :disabledDate="disabledDateFun" 
 clearable 
 v-model="state.searchtime"
 type="daterange"
 unlink-panels 
 range-separator="~" 
 start-placeholder="开始日期" 
 end-placeholder="结束日期"
 value-format="YYYY-MM-DD HH:mm:ss" 
 :shortcuts="shortcuts" 
 :default-time="defaultTime"
 size="default" />

script

const state = reactive({
    searchtime: "",
});

设置时间格式【00:00:00,23:59:59】

const defaultTime = ref([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)])

前三个月

const threeBefore = () => {
    let date = new Date()
    date.setMonth(date.getMonth() - 3)
    var pastMonth = date.getMonth() + 1
    var pastDay = date.getDate()
    if (pastMonth >= 1 && pastMonth <= 9) { pastMonth = '0' + pastMonth }
    if (pastDay >= 0 && pastDay <= 9) { pastDay = '0' + pastDay }
    return date.getFullYear() + '-' + pastMonth + '-' + pastDay + ' 00:00:00'
}

设置默认显示时间

const defaultDate = () => {
    // 获取新的时间
    let date = new Date()
    let year = date.getFullYear().toString()//年份
    let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1).toString() : (date.getMonth() + 1).toString()//获取月份,由于月份从0开始,此处要加1
    let da = date.getDate() < 10 ? '0' + date.getDate().toString() : date.getDate().toString() //获取天使用三目运算拼接
    let str = date.toTimeString().substring(0, 8); //获取时分秒
    let end = year + '-' + month + '-' + da + ' ' + str  //当天
    let start = year + '-' + month + '-01' + ' 00:00:00'    //当月第一天
    state.searchtime = [start , end] //默认显示本月
    state.searchtime = [threeBefore(), end] //默认显示最近三个月
}

在这里插入图片描述

禁止选择三个月前的日期

const disabledDateFun = (time) => {
    return time.getTime() < new Date(threeBefore()).getTime()
};

在这里插入图片描述

页面加载


onMounted(() => {defaultDate()});
### 使用 `el-date-picker` 组件实现择月份功能 为了使 `el-date-picker` 支持仅择月份而不显示具体日期,可以设置其 `type` 属性为 `"month"` 或者 `"monthrange"` 来分别表示单个月份的择或是连续多个月份的择。 #### 单月择 当只需要让用户挑一个月而不需要指定具体的某一天时,应该把 `type` 设置成 `"month"`。下面是一个简单的例子展示如何配置这个项: ```html <template> <div class="block"> <!-- 单月--> <span class="demonstration">请择一个月份:</span> <el-date-picker v-model="singleMonth" type="month" placeholder="择月份" format="yyyy-MM" value-format="yyyy-MM"> </el-date-picker> </div> </template> <script> export default { name: 'SingleMonthPicker', data () { return { singleMonth: '' // 存储所的月份,默认为空字符串 } } } </script> ``` 此代码片段定义了一个名为 `SingleMonthPicker` 的 Vue 组件,其中包含一个用于取单一月份的日历控件[^1]。 #### 多月择 如果需求是要允许用户一次性定一段期间内的多个相连月份,则应采用 `type="monthrange"` 参数,并相应调整模板结构如下所示: ```html <template> <div class="block"> <!-- 连续多月--> <span class="demonstration">请择起始和结束月份:</span> <el-date-picker v-model="multipleMonths" type="monthrange" range-separator="-" start-placeholder="开始月份" end-placeholder="结束月份" format="yyyy-MM" value-format="yyyy-MM"> </el-date-picker> </div> </template> <script> export default { name: 'MultipleMonthsPicker', data () { return { multipleMonths: ['', ''] // 初始化两个空位数组项用来保存起止两个月份 } } } </script> ``` 这段脚本创建了另一个叫做 `MultipleMonthsPicker` 的组件实例,它提供了一种方式让访客能够轻松地圈定任意长度的一系列相邻月份区间[^2]。 以上就是利用 Element UI 中的 `el-date-picker` 实现月份级别时间输入的方法介绍以及相应的 HTML 和 JavaScript 示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值