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

element-ui的年份范圍選擇器,選擇的年份需等于或小于當前年份,選擇的年份范圍必須在三年之內(nèi)

這篇具有很好參考價值的文章主要介紹了element-ui的年份范圍選擇器,選擇的年份需等于或小于當前年份,選擇的年份范圍必須在三年之內(nèi)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

寫在前面

日期限制處理(禁用),下面我以我這邊的需求為例,

選擇的年份需等于或小于當前年份
選擇的年份范圍必須在三年之內(nèi)

1.限制起始日期小于截止日期
1)根據(jù)用戶選中的開始日期,置灰不可選的日期范圍;

2)如果用戶先選擇截止日期,再選擇的開始日期,且開始日期大于截止日期,清空截止日期;
elementui 年選擇日期范圍,前端,elementui,vue,ui,vue.js,elementui,前端
elementui 年選擇日期范圍,前端,elementui,vue,ui,vue.js,elementui,前端
elementui 年選擇日期范圍,前端,elementui,vue,ui,vue.js,elementui,前端

  <div class="min-wid data-flex-start" >
          <span class="with-hide"></span><span class="with-d with-s"></span>
          <div class="year-range-picker">
            <el-date-picker
              v-model="dateList[0]"
              :picker-options="startDatePicker"
              type="year"
              placeholder="選擇開始年"
              size="mini"
              class="year-picker"
              format="yyyy"
              value-format="yyyy"
              @change="handleDateChange"
            />
            <span class="range-word"></span>
            <el-date-picker
              :key="randomKey "
              v-model="dateList[1]"
              :picker-options="endDatePicker"
              :default-value="dateDefaultShow"
              type="year"
              placeholder="選擇結(jié)束年"
              size="mini"
              class="year-picker"
              value-format="yyyy"
            />
          </div>
        </div>
 data() {
    return {
      randomKey: 0,
      startDatePicker: this.beginDate(),
      endDatePicker: this.processDate(),
      dateDefaultShow: '', // 日期選擇器的日期默到選擇的年份
      datatimeStr: {
        dateBegin: '',
        endDataDate: ''
      },
      minNowDate: '',
      maxNowDate: '',
      dateList: ['', '']
      }
      }
 methods: {
    // 獲取日期 disabledDate 函數(shù)用于定義哪些日期應(yīng)該被禁用。禁止選擇大于特定日期的日期。
    // 選擇年份范圍選擇時開始時間不能大于結(jié)束時間,結(jié)束時間不能小于開始時間
    // 提出開始時間必須小于提出結(jié)束時間
    beginDate() {
      const self = this
      return {
        disabledDate(time) {
          if (self.dateList[1] !== '') {
            const fixedTime = new Date(time)
            return fixedTime.getFullYear() > self.dateList[1]
          }
        }
      }
    },
    // 提出結(jié)束時間必須大于提出開始時間
    processDate() {
      const self = this
      return {
        disabledDate(time) {
          if (self.dateList[0] !== '') {
            const fixedTime = new Date(time)
            if ((Number(self.maxNowDate) - Number(self.dateList[0])) <= 2) {
              return fixedTime.getFullYear() > self.maxNowDate || fixedTime.getFullYear() < self.dateList[0]
            } else {
              return fixedTime.getFullYear() > (self.maxNowDate - (Number(self.maxNowDate) - Number(self.dateList[0])) + 2) || fixedTime.getFullYear() < self.dateList[0]
            }
          }
        }
      }
    },
    // 獲取最大日期
    getMaxDate() {
      getDataDate().then(res => {
        // 默認結(jié)束年為有數(shù)據(jù)的最近年,默認開始年為默認結(jié)束年-2,即默認時間范圍為3年
        this.maxNowDate = res.slice(0, 4)
        this.minNowDate = this.maxNowDate - 2
        this.dateList[0] = this.minNowDate.toString()
        this.dateList[1] = this.maxNowDate
        // 強制刷新
        this.$forceUpdate()
      }).catch(err => {
        console.log(err)
      })
    },
    // 當開始日期改變時的處理函數(shù)
    // 如果截止日期早于開始日期3年以上,將截止日期清空
    handleDateChange() {
      // 當選擇的開始日期比結(jié)束日期早三年以上時,清空結(jié)束日期
      if (this.dateList[1] - 2 > this.dateList[0]) {
        this.dateList[1] = ''
        // 改變數(shù)組內(nèi)的值,強制刷新,清空結(jié)束日期的顯示
        this.randomKey = Math.random()
      }
      // 日期選擇器定位到選擇的開始年份
      this.dateDefaultShow = this.dateList[0]
    }
    }
<style scoped>
  /* 頂部樣式 */
  .card-head{
    padding:12px 16px;
    background-color: #fff;
    position:relative;
  }
  /* 數(shù)據(jù)日期字體樣式 */
  .date-font{
    color: var(---Gray-6, #78808F);
    font-family: "PingFang SC";
    font-size: 12px;
    font-style: normal;
    font-weight: 400;
    line-height: 20px; /* 166.667% */
  }
  /*彈性布局:兩端對齊 */
  .data-flex-sabw{
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }
  /* 彈性布局:左對齊*/
  .data-flex-start {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
  }
  /* 彈性布局:右對齊*/
  .data-flex-end {
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
  }
  .tp-con{
    width: 100%;
    height: 56px;
    box-sizing: border-box;
    display: flex;
    padding: 12px 0px;
    align-items: flex-start;
    gap: 20px;
  }
  /*隱藏顯示,占位*/
  .with-hide {
    opacity: 0;
    color: var(---Neutral-8, #292929);
    font-family: "PingFang SC";
    font-size: 14px;
    font-style: normal;
    font-weight: 400;
    line-height: 22px; /* 157.143% */
  }
  .with-d {
    width: 24px;
  }
  .with-t {
    width: 80px;
  }
  .with-l {
    width: 38px;
  }
  .with-s {
    box-sizing: border-box;
    padding-right: 8px;
    color: var(---Neutral-8, #292929);
    text-align: right;
    font-family: "PingFang SC";
    font-size: 14px;
    font-style: normal;
    font-weight: 400;
    line-height: 22px; /* 157.143% */
  }
  .st_line {
    box-sizing: border-box;
    margin: 0 2px;
    width: 9px;
    height: 22px;
    color: var(---Gray-6, #78808F);
    text-align: center;
    font-family: "PingFang SC";
    font-size: 14px;
    font-style: normal;
    font-weight: 400;
    line-height: 22px; /* 157.143% */
  }
  .min-wid{
    min-width:160px;
  }
  .query-bt {
    background-color: #00B0B0;
    color: #FFF;
    outline: none;
  }
  .center-deep{
    hight: 100%;
    width: 100%;
    background-color: #fff;
    margin-top: 16px;
  }
  /deep/ .treeselect-main {
    width: 204px;
    line-height: 28px;
  }
  /deep/ .vue-treeselect__placeholder {
    line-height: 28px;
  }
  /deep/ .vue-treeselect__control {
    height: 32px !important;
    line-height: 32px;
    border-radius: 4px;
  }
  /deep/.vue-treeselect__single-value {
    font-size: 14px;
    top: 0%;
    color: #606266;
    font-weight: 400;
  }
  /deep/.vue-treeselect__input {
    height: 32px;
    line-height: 32px;
  }
  /*頂部篩選器輸入框?qū)挾?/
  /deep/.el-select el-select--small,el-input el-input--small el-input--suffix{
    width: 100% !important;
    flex: 1;
  }
  /*年范圍選擇器*/
  .year-range-picker {
    color: black;
    text-align: center;
    border: 1px solid #dcdfe6;
    border-radius:4px;
    line-height: 32px;
    overflow: hidden;
    display: flex;
    margin: 4px 0;
  }
  /deep/.el-input--mini .el-input__inner {
    height: 32px;
    line-height: 32px;
    border: none
  }
  .range-word {
    box-sizing: border-box;
    padding-top: 6px;
    color: var(---Neutral-8, #292929);
    text-align: right;
    font-family: "PingFang SC";
    font-size: 14px;
    font-style: normal;
    font-weight: 400;
    line-height: 22px;
  }

  .year-range-picker .year-picker {
    max-width: 150px;
    margin:0;
  }
</style>

v-for里面數(shù)據(jù)層次太多,或者套的組件層級太多, 數(shù)據(jù)變了,頁面沒有重新渲染,需手動強制刷新。

解決方法:運用 this.$forceUpdate()強制刷新

迫使 Vue 實例重新渲染。注意它僅僅影響實例本身和插入插槽內(nèi)容的子組件,而不是所有子組件。

知識點:vue $forceUpdate() 強制重新渲染及四種方案對比

Vue的雙向綁定屬于自動檔;在特定的情況下,需要手動觸發(fā)“刷新”操作,目前有四種方案可以選擇:

刷新整個頁面(最low的,可以借助route機制,不推薦)
使用v-if標記(比較low的,有時候不生效,不推薦)
使用內(nèi)置的forceUpdate方法(較好的)
使用key-changing優(yōu)化組件(最好的)
vue $forceUpdate() 強制重新渲染及四種方案對比

參考文章:

ElementUI 年份范圍選擇器 el-year-picker
點開是關(guān)聯(lián)的組件-基于element-ui的年份范圍選擇器
vue中element-ui日期選擇組件el-date-picker 清空所選時間,會將model綁定的值設(shè)置為null 問題 及 限制起止日期范圍
vue elementui時間控件,(單框同時選)范圍選擇周,季,年。
element ui datepicker時間控件實現(xiàn)范圍選擇周,季,年。
ElementUI年份范圍選擇器功能實現(xiàn)
element ui的日期選擇器動態(tài)設(shè)定年份,并默認顯示在該年份范圍的日期時間
vue2、vue3中使用$forceUpdate()

??寫在最后

希望我的分享能夠幫助到更多的人,如果覺得我的分享有幫助的話,請大家一鍵三連支持一下哦~
??原創(chuàng)不易,期待你的關(guān)注與支持~
點贊??+收藏??+評論??
??之后我會繼續(xù)更新前端學(xué)習(xí)小知識,關(guān)注我不迷路~
文章來源地址http://www.zghlxwxcb.cn/news/detail-850683.html

到了這里,關(guān)于element-ui的年份范圍選擇器,選擇的年份需等于或小于當前年份,選擇的年份范圍必須在三年之內(nèi)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包