iview 起始时间选择器、时间选择限制

14 篇文章 0 订阅

1.起始截止时间约束

<template>
    <!-- 起始时间选择器 -->
    <div >
        <Form  ref="formInline" :model="searchForm" :label-width="70" inline>
            <Form-item label="开始日期" prop="from">          
            <DatePicker
            v-model="searchForm.from"
            @on-change="onSearchStartTimeChange"                    
            :options="searchStartTimeOption"
            type="date" 
            format="yyyy-MM-dd" 
            placeholder="请选择开始日期" 
            style="width: 150px;">
            </DatePicker>
            </Form-item>
            <Form-item label="截止日期" prop="to">          
            <DatePicker
           
            v-model="searchForm.to"
            :options="searchEndTimeOption"
            @on-change="onSearchEndTimeChange" 
            type="date" 
            format="yyyy-MM-dd" 
            placeholder="请选择截止日期" 
            style="width: 150px">
            </DatePicker>
            </Form-item>
         </Form>
    </div>
    
</template>

<script>
    export default {
        name: 'StartEnd',
        data() {
            return {
                searchForm: {
                    from: "",
                    to: ""
                },
            }
        },
        computed:{
         //设置不可选择的日期,option的disabledDate属性
            searchStartTimeOption(){
                return{
                        //date为从1970开始的日期
                        disabledDate:date=>{
                            let endTime  = new Date(this.searchForm.to).valueOf();
                                //若返回值为ture 则该日期处于禁用状态
                                return date && date.valueOf() >endTime;
                        }
                }
            },
            searchEndTimeOption(){
                return{
                        disabledDate:date=>{
                            //为了让结束日期可以选择当前开始日期,则减去一天的时间
                            let startTime  = new Date(this.searchForm.from).valueOf() -1*24*60*60*1000;
                                return date && date.valueOf() <startTime;
                        }
                }
            },     
        },
        methods:{
            onSearchStartTimeChange(e, type){
                this.searchForm.from = e;
                this.$emit('start',e);
            },
            onSearchEndTimeChange(e, type) { 
                this.searchForm.to = e;
                this.$emit('end',e);
            },
        }
    }
</script>


2.时间选择限制–只能选择现在和过去


<DatePicker
v-model="platForm.contractTime"
type="date" 
format="yyyy-MM-dd" 
placeholder="请选择时间" 
:options="options"
></DatePicker>


data(){
	return{
	options: {
          disabledDate (date) {
              return date && date.valueOf() >= Date.now();
          }
      },
	}
}

时间格式 yyyy-mm-dd

<DatePicker type="date" format="yyyy-MM-dd" @on-change="savePublishTime" :value="saveForm.publishTime" class="search"  placeholder="请选择发布时间"></DatePicker>

savePublishTime(e){
    this.saveForm.publishTime = e;
},

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 iView 的 `DatePicker` 和 `TimePicker` 组件配合使用来实现日期时间选择器,并且可以通过设置 `disabledDate` 函数来限制开始时间至结束时间。 以下是一个示例代码: ```html <template> <div> <DatePicker v-model="startDate" :disabledDate="disabledStartDate" placeholder="开始时间" /> <TimePicker v-model="startTime" :disabledHours="disabledStartHours" :disabledMinutes="disabledStartMinutes" :disabledSeconds="disabledStartSeconds" placeholder="开始时间" /> <DatePicker v-model="endDate" :disabledDate="disabledEndDate" placeholder="结束时间" /> <TimePicker v-model="endTime" :disabledHours="disabledEndHours" :disabledMinutes="disabledEndMinutes" :disabledSeconds="disabledEndSeconds" placeholder="结束时间" /> </div> </template> <script> export default { data() { return { startDate: null, startTime: null, endDate: null, endTime: null, }; }, methods: { disabledStartDate(date) { if (!this.endDate) { return false; } return date && date.valueOf() > this.endDate.valueOf(); }, disabledEndDate(date) { if (!this.startDate) { return false; } return date && date.valueOf() < this.startDate.valueOf(); }, disabledStartHours() { if (!this.startTime) { return []; } return Array.from({ length: 24 }, (_, i) => i).slice(0, this.endTime.getHours()); }, disabledStartMinutes(h) { if (!this.startTime || h < this.endTime.getHours()) { return []; } return Array.from({ length: 60 }, (_, i) => i).slice(0, this.endTime.getMinutes()); }, disabledStartSeconds(h, m) { if (!this.startTime || h < this.endTime.getHours() || m < this.endTime.getMinutes()) { return []; } return Array.from({ length: 60 }, (_, i) => i).slice(0, this.endTime.getSeconds()); }, disabledEndHours() { if (!this.endTime) { return []; } return Array.from({ length: 24 }, (_, i) => i).slice(this.startTime.getHours() + 1); }, disabledEndMinutes(h) { if (!this.endTime || h > this.startTime.getHours() + 1) { return []; } return Array.from({ length: 60 }, (_, i) => i).slice(this.startTime.getMinutes() + 1); }, disabledEndSeconds(h, m) { if (!this.endTime || h > this.startTime.getHours() + 1 || m > this.startTime.getMinutes() + 1) { return []; } return Array.from({ length: 60 }, (_, i) => i).slice(this.startTime.getSeconds() + 1); }, }, }; </script> ``` 在上面的示例代码中,我们使用了四个数据属性 `startDate`、`startTime`、`endDate` 和 `endTime` 来分别存储用户选择的开始日期时间和结束日期时间。 在 `DatePicker` 和 `TimePicker` 组件上,我们使用 `v-model` 指令将其与数据属性绑定,以实现双向绑定。 在 `DatePicker` 组件上,我们通过设置 `disabledDate` 函数来禁用开始时间晚于结束时间的日期。 在 `TimePicker` 组件上,我们通过设置 `disabledHours`、`disabledMinutes` 和 `disabledSeconds` 函数来禁用开始时间晚于结束时间的时、分、秒。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值