国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

三分鐘教你如何實(shí)現(xiàn)el-date-picker動(dòng)態(tài)限制選中日期

這篇具有很好參考價(jià)值的文章主要介紹了三分鐘教你如何實(shí)現(xiàn)el-date-picker動(dòng)態(tài)限制選中日期。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

首先在頁面上插入一個(gè)el-date-picker組件并綁定一個(gè)響應(yīng)值

這里我們需要day.js這個(gè)庫來幫助我們處理Date對(duì)象,便于日期的計(jì)算

<script setup lang="ts">
import { ref } from 'vue'
import dayjs from 'dayjs'; //時(shí)間處理

const dateRange = ref([])
</script>

<template>
  <div class="date-picker">
    <el-date-picker
        v-model="dateRange"
        type="daterange"
    />
  </div>
</template>

<style scoped>
.date-picker {
  width: 100vw;
  height: 90vh;
  display: grid;
  place-content: center;
}
</style>

然后我們使用disable-date屬性控制哪些日期需要禁用

該屬性接受一個(gè)函數(shù)函數(shù)的參數(shù)為一個(gè)date對(duì)象代表組件中每一個(gè)可能被選中的日期。

函數(shù)的返回值為一個(gè)布爾值true代表參數(shù)的日期會(huì)被禁用,false代表不會(huì)被禁用。

<script setup lang="ts">
import { ref } from 'vue'
import dayjs from 'dayjs'; //時(shí)間處理

const dateRange = ref([])

const disableRange = (date: Date) => {
  return false
}
</script>

<template>
  <div class="date-picker">
    <el-date-picker
        v-model="dateRange"
        type="daterange"
        :disabled-date="disableRange"
    />
  </div>
</template>

el-date-picker,vue.js,前端,javascript,elementui

返回值為true時(shí)的情況

這里我們指定的禁用的范圍如下:

  1. 大于當(dāng)天的日期不可選中
  2. 大于或者小于選中日期31天的日期不可選中

要實(shí)現(xiàn)動(dòng)態(tài)限制日期,我們還需要獲取在選擇日期范圍時(shí)第一個(gè)選中的日期,在element-ui中有pickOption的屬性去拿到這個(gè)日期,而在element-plus中,pickOption屬性被取消了,但有一個(gè)事件可以代替它的作用,就是@calendar-change。

該事件接受一個(gè)函數(shù),函數(shù)的參數(shù)為一個(gè)含有兩個(gè)日期對(duì)象的數(shù)組,選中第一個(gè)日期時(shí)組件會(huì)將該日期對(duì)象放在數(shù)組首位,選中第二個(gè)日期后會(huì)按照時(shí)間順序排列兩個(gè)日期,較前的日期會(huì)在數(shù)組首位,較后的日期會(huì)在次位,選中任一個(gè)日期時(shí)函數(shù)的參數(shù)就會(huì)發(fā)生變化并觸發(fā)該函數(shù)。

因此我們可以定義一個(gè)響應(yīng)值來存儲(chǔ)第一次選中的日期,我們可以先輸出看看該函數(shù)的參數(shù)是否如我們剛剛所說:

<script setup lang="ts">
import { ref } from 'vue'
import dayjs from 'dayjs'; //時(shí)間處理

const dateRange = ref([])

const disableRange = (date: Date) => {
  return false
}
const selectDate = (date: Array<Date>) => {
  consoloe.log(date)
}
</script>

<template>
  <div class="date-picker">
    <el-date-picker
        v-model="dateRange"
        type="daterange"
        :disabled-date="disableRange"
        @calendar-change="selectDate"
    />
  </div>
</template>

el-date-picker,vue.js,前端,javascript,elementui

這樣我們就可以在該函數(shù)觸發(fā)時(shí)將數(shù)組第一位的值賦值給定義的響應(yīng)值,獲取到第一個(gè)選中的日期并存了起來

<script setup lang="ts">
import { ref } from 'vue'
import dayjs from 'dayjs'; //時(shí)間處理

const dateRange = ref([])
const selectedValue = ref()

const disableRange = (date: Date) => {
  return false
}
const selectDate = (date: Array<Date>) => {
  selectedValue.value = date[0] //獲取到第一個(gè)選中的日期
}
</script>

<template>
  <div class="date-picker">
    <el-date-picker
        v-model="dateRange"
        type="daterange"
        :disabled-date="disableRange"
        @calendar-change="selectDate"
    />
  </div>
</template>

然后我們將三個(gè)指定的禁用范圍的或值作為disable-date的返回值,大于當(dāng)天的日期我們可以直接將兩個(gè)Date對(duì)象進(jìn)行比較,大于或者小于選中日期31天的日期我們使用day.js的subtract和add函數(shù)簡化計(jì)算,具體使用方法可以在day.js的官網(wǎng)查看。這里我們用上了剛剛存下來的第一次選中的日期進(jìn)行比較

<script setup lang="ts">
import { ref } from 'vue'
import dayjs from 'dayjs'; //時(shí)間處理

const dateRange = ref([])
const selectedValue = ref()

const disableRange = (date: Date) => {
  return date > new Date() || dayjs(date) < dayjs(selectedValue.value).subtract(31, 'days')
|| dayjs(date) > dayjs(selectedValue.value).add(31, 'days')

}
const selectDate = (date: Array<Date>) => {
  selectedValue.value = date[0] //獲取到第一個(gè)選中的日期
}
</script>

<template>
  <div class="date-picker">
    <el-date-picker
        v-model="dateRange"
        type="daterange"
        :disabled-date="disableRange"
        @calendar-change="selectDate"
    />
  </div>
</template>

查看效果
el-date-picker,vue.js,前端,javascript,elementui

可以發(fā)現(xiàn)還沒有選中日期時(shí),前面就有不能選中的日期了,這是因?yàn)槲覀儧]有處理selectedValue為空值的情況,可以在change事件中添加選中第二個(gè)日期后將selectedValue置空的邏輯,然后在disable-date中添加空值判斷的邏輯即可

<script setup lang="ts">
import { ref } from 'vue'
import dayjs from 'dayjs'; //時(shí)間處理

const dateRange = ref([])
const selectedValue = ref()

const disableRange = (date: Date) => {
  //大于今日日期不可選中
  //大于或者小于選中日期31天不可選中
  if(!selectedValue.value)
    return date>new Date()
  return date>new Date() || dayjs(date)<dayjs(selectedValue.value).subtract(31, 'days')
  || dayjs(date)>dayjs(selectedValue.value).add(31, 'days')
}

const selectDate = (date: Array<Date>) => {
  selectedValue.value = date[0]
}
</script>

<template>
  <div class="date-picker">
    <el-date-picker
        v-model="dateRange"
        type="daterange"
        :disabled-date="disableRange"
        @calendar-change="selectDate"
        @change="selectedValue=null"
    />
  </div>
</template>

<style scoped>
.date-picker {
  width: 100vw;
  height: 90vh;
  display: grid;
  place-content: center;
}
</style>

此時(shí)我們看到動(dòng)態(tài)禁用就實(shí)現(xiàn)了

el-date-picker,vue.js,前端,javascript,elementui

視頻教程在這里el-canlendar動(dòng)態(tài)限制選中日期

歡迎關(guān)注B站小南前端の干貨分享文章來源地址http://www.zghlxwxcb.cn/news/detail-776773.html

到了這里,關(guān)于三分鐘教你如何實(shí)現(xiàn)el-date-picker動(dòng)態(tài)限制選中日期的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • el-date-picker自定義選擇時(shí)間&&el-time-select自定義選擇時(shí)間實(shí)現(xiàn)避免時(shí)間沖突

    el-date-picker自定義選擇時(shí)間&&el-time-select自定義選擇時(shí)間實(shí)現(xiàn)避免時(shí)間沖突

    固定十二個(gè)月,當(dāng)月開始時(shí)間默認(rèn)選擇月第一天,結(jié)束時(shí)間默認(rèn)選擇月最后一天; 月份選擇只允許選擇當(dāng)前月份 將當(dāng)月對(duì)應(yīng)的每天按照時(shí)間段劃分,段數(shù)不做限制。 時(shí)間段支持任意位置插入(新增)、刪除。 每個(gè)時(shí)間段具有包含屬性,同一時(shí)刻不允許在兩個(gè)時(shí)間段中出現(xiàn)包

    2024年02月05日
    瀏覽(22)
  • vue element ui el-date-picker(日期選擇器)實(shí)現(xiàn)聯(lián)動(dòng)聯(lián)級(jí)選擇效果。

    vue element ui el-date-picker(日期選擇器)實(shí)現(xiàn)聯(lián)動(dòng)聯(lián)級(jí)選擇效果。

    頁面上有三個(gè) 日期選則器。第一個(gè)只能選擇月份,第二個(gè)是 年月, 第三個(gè)是年月日 。 然后第一個(gè)選擇完畢 第二個(gè)、第三個(gè)自動(dòng)帶出年 。第二個(gè)選擇月 第三個(gè)自動(dòng)帶出月。 ?思路: 就是 一個(gè)簡單的賦值 。第一個(gè) change里 給第二個(gè)和第三個(gè)賦值 。第二個(gè)change里給第三個(gè)賦

    2024年02月16日
    瀏覽(31)
  • <el-date-picker>時(shí)間戳單位

    神級(jí)操作,搞了半天,秒是大X,毫秒是小x,yue了。 from:參考來源

    2024年01月25日
    瀏覽(22)
  • el-date-picker:選擇日期的限制

    el-date-picker:選擇日期的限制

    目錄 前言: 基本使用: 時(shí)間區(qū)間: 公司業(yè)務(wù):選擇一個(gè)日期區(qū)間,但是只能選擇本月 day.js簡化版1 day.js簡化版2 element-ui作為vue的龍頭ui組件庫,深受前端開發(fā)者的喜愛。 本文著重記錄如何使用el-date-picker日期選擇器,怎么去限制選擇日期。先上官網(wǎng)鏈接---el-date-picker 先看下

    2024年02月09日
    瀏覽(30)
  • el-date-picker(日期時(shí)間選擇)那些事

    用于記錄工作和學(xué)習(xí)中遇到的問題 vue3+element-plus 日期時(shí)間格式轉(zhuǎn)換 組件默認(rèn)的格式:2024-02-01T16:00:00.000Z 需要轉(zhuǎn)換成:YYYY-MM-DD HH:mm:ss

    2024年02月22日
    瀏覽(27)
  • el-date-picker限制選擇的時(shí)間范圍

    el-date-picker限制選擇的時(shí)間范圍

    ?限制選擇今天之前的時(shí)間,并且只能選擇一天???????????????? 只能選擇今天往后365天

    2024年02月10日
    瀏覽(18)
  • el-date-picker組件設(shè)置時(shí)間范圍限制

    el-date-picker組件設(shè)置時(shí)間范圍限制

    如圖所示,下圖為新增的一個(gè)彈層頁面,同時(shí)有個(gè)需求, 日期選擇 需要 限制一個(gè)月的時(shí)間范圍 (一月 默認(rèn)為30天 ): 參數(shù) 說明 類型 可選值 默認(rèn)值 shortcuts 設(shè)置快捷選項(xiàng),需要傳入 { text, onClick } 對(duì)象用法參考 demo 或下表 Object[] — — disabledDate 設(shè)置禁用狀態(tài),參數(shù)為當(dāng)前

    2024年01月17日
    瀏覽(21)
  • vue + element實(shí)現(xiàn)el-date-picker的時(shí)間格式轉(zhuǎn)換,以及自定義時(shí)間格式,修改輸入的時(shí)間格式

    vue + element實(shí)現(xiàn)el-date-picker的時(shí)間格式轉(zhuǎn)換,以及自定義時(shí)間格式,修改輸入的時(shí)間格式

    如果只是需要修改傳給后端的值或者格式,可以使用 value-format實(shí)現(xiàn),可以在文檔上查看詳細(xì)的介紹 使用自定義指令,首先需要?jiǎng)?chuàng)建一個(gè)自定義指令代碼的存放位置,我是/utils/directive/dataForm/dataformat.js這個(gè)路徑創(chuàng)建的內(nèi)容 自定義指令內(nèi)容

    2024年02月15日
    瀏覽(22)
  • element ui 修改el-date-picker樣式

    element ui 修改el-date-picker樣式

    ?首先查看官方文檔,是否提供了類自定義的參數(shù) ,其他組件也是如此 第二種效果圖: ? ?

    2024年02月11日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包