IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> ant-design-vue range-picker日期范围组件 mode=“[‘year‘ ‘year‘]“时 开始和结束日期的相互禁用失效的问题 -> 正文阅读

[JavaScript知识库]ant-design-vue range-picker日期范围组件 mode=“[‘year‘ ‘year‘]“时 开始和结束日期的相互禁用失效的问题

ant-design-vue 的 range-picker组件,设置属性 :mode="[‘year’, ‘year’]" ,设置之后:开始和结束日期的相互禁用失效了,正常的效果应该是开始日期不能大于结束日期,结束日期不能小于开始日期,正常效果如图所示在这里插入图片描述
由于官方提供的disabledDate api也是失效的,不知道有没有更好的解决方式,我这里是用的原生的dom操作添加css样式 达到禁用点击事件的方式实现类似的效果
解决如下:

<template>
  <div>
    <a-range-picker
      :placeholder="['开始时间', '结束时间']"
      format="YYYY年"
      :mode="['year', 'year']"
      @panelChange="handlePanelChange"
      @openChange="openChange"
    />
  </div>
</template>
<script>
import moment from 'moment'
    export default {
        data(){ 
            return { 
                start : 2021,
                end : 2025
            }
        },
        methods:{
            handlePanelChange(value){
                this.start = moment(value[0]).format('YYYY')
                this.end = moment(value[1]).format('YYYY')
                this.openChange()
            },
            openChange(){
                setTimeout(()=>{
                    this.endDisabled()
                    this.startDisabled()
                })
		    },
		// 年份开始日期禁用
		startDisabled() {
			this.$nextTick(() => {
				const table = document.getElementsByClassName('ant-calendar-year-panel-tbody')
				 // 所有开始年份
				const startList = table[0].querySelectorAll('td')
				startList.forEach(item => {
					if (item.innerText > this.end) {
						item.setAttribute('class', 'year-disabled')
					} else {
						item.classList.remove('year-disabled')
					}
				})
			})
		},
		// 年份禁用结束时间
		endDisabled() {
			this.$nextTick(() => {
				const table = document.getElementsByClassName('ant-calendar-year-panel-tbody')
				// 所有结束年份
				const endList = table[1].querySelectorAll('td') 
                    endList.forEach(item => {
                        if (item.innerText < this.start) {
                            item.setAttribute('class', 'year-disabled')
                        } else {
                            item.classList.remove('year-disabled')
                        }
                    })
                })
		    },

        }
    }
</script>
<style lang="less" scoped>
.year-disabled {
	pointer-events: none;
	cursor: not-allowed;
	a {
		color: rgba(0, 0, 0, 0.25);
		background: #f5f5f5;
	}
}
</style>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:31:55  更:2021-08-06 09:34:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 -2025/2/5 22:51:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码