TimePicker in element disables part of the time (disabled to minutes)

TimePicker in element disables part of the time (disabled to minutes)

The project requirements are: select date and time, only select time after the current time, and disable the minimum level to minutes.

There are two options
1. Use DateTimePicker date time picker.
2. DatePicker and TimePicker combined use Here I use the second method, the most important attribute is picker-options

<el-date-picker
          v-model="formInline.inventoryDate"
          type="date"
          align="right"
          placeholder="Please select a date"
          :picker-options="pickerOptions"
          value-format="yyyy-MM-dd"
          format="yyyy-MM-dd"
          @change="changeDate"
         ></el-date-picker>
         <el-time-picker
          v-model="formInline.inventoryDateTime"
          type="date"
          align="right"
          placeholder="Please select a time"
          :picker-options="{
           selectableRange: this.startTimeRange
          }"
          @change="changeTime"
          value-format="HH:mm:ss"
          format="HH:mm:ss"
         ></el-time-picker>
data(){
	return {
		pickerOptions: {
    disabledDate: time => {
     return time.getTime() < Date.now() - 3600 * 1000 * 24
    },
   },
	}
},
watch:
  'formInline.inventoryDate':{
   deep:true,
   handler(newValue, oldValue) {
    if(newValue){
     let nowDate = this.$options.filters['sendTimeDate'](new Date().getTime()+60*1000);// The time after one minute (I am due to business requirements, you can adjust the time here at will)
     let dt = nowDate.split(" ");
     let st = '';
     if(newValue.split(" ")[0] == dt[0]){
      // Today, the selected time starts from the current hour, minute, and second st = dt[1];
     }else{
      // Tomorrow and thereafter start at 0:00 st = '00:00:00';
     }
     this.startTimeRange = st + '- 23:59:59';
     //console.log(this.startTimeRange)
     //For example: If the time today is 10:41:40, then select the time range: 11:41:40 - 23:59:59
       //Otherwise: 00:00:00 - 23:59:59
    }
   },
  }
 },

Idea: Use the disabledDate configuration item in the picker-options attribute of el-date-picker to disable the date picker first, so that it can only select dates after the current date, and then use watch to monitor the date selected by the date picker. If it is today, use the selectableRange configuration item in the picker-options attribute of el-time-picker to control the selectable time.

Note: Although this logic can disable the selection of seconds, the selection of seconds is not disabled in the front-end page. When you select the previous seconds, the seconds after one minute will be displayed by default (I did it because of business requirements. You can adjust the disabled time period at will through the above code)

Rendering effect:

insert image description here

Let me summarize the first method. The date I disabled is before today, and the time range is from 22:00 to 02:00. I will directly post the code.

<el-date-picker
         class="dateClass"
         v-model="aa"
         type="datetime"
         :picker-options="pickerOptions"
         placeholder="After 22:00"
         style="width:100%">
        </el-date-picker>


 data() {
   return {
     aa: '',
     pickerOptions: {
      // Limit time selectableRange: ['22:00:00 - 23:59:59','00:00:00 - 02:00:00'], // You can also bind a variable here to dynamically limit the time // Limit date disabledDate: this.disabledDate
    },
   }
 } ,
 methods: {
  disabledDate(time) {
    return time.getTime() < Date.now() - 3600 * 1000 * 24
  }
}

This is the end of this article about disabling part of the time in the TimePicker time selector in element (disabling to minutes). For more information about disabling part of the time in the element TimePicker, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Solve the problem that the element DateTimePicker+vue pop-up box only displays hours
  • Element DateTimePicker date time selector usage example

<<:  How to sort a row or column in mysql

>>:  How to find slow SQL statements in MySQL

Recommend

Detailed explanation of two ways to dynamically change CSS styles in react

The first method: dynamically add a class to show...

Detailed steps for using AES.js in Vue

Use of AES encryption Data transmission encryptio...

Vue implements the question answering function

1. Request answer interface 2. Determine whether ...

CSS3 achieves flippable hover effect

CSS3 implements a flippable hover effect. The spe...

Small paging design

Let our users choose whether to move forward or ba...

Native js implements a minesweeper game with custom difficulty

This article example shares the specific code of ...

Implementing Binary Search Tree in JavaScript

The search binary tree implementation in JavaScri...

How to use Vue3 to achieve a magnifying glass effect example

Table of contents Preface 1. The significance of ...

Detailed steps for porting busybox to build a minimal root file system

Busybox: A Swiss Army knife filled with small com...

Vue encapsulation component upload picture component

This article example shares the specific code of ...

The difference between ID and Name attributes of HTML elements

Today I am a little confused about <a href=&quo...

Summary of Docker Consul container service updates and issues found

Table of contents 1. Container service update and...

Detailed explanation of Vue slot

1. Function : Allows the parent component to inse...

Simple CSS text animation effect

Achieve results Implementation Code html <div ...