elementUI 日期组件 <el-date-picker type=“daterange“ > 时间范围遇到的问题 tips

1.此组件默认展示两个日历框,并且两个日历框联动展示

2.若在同一日历中选择时间范围,只需将其联动解除,并隐藏右侧日历框

 (1)解除联动

         标签中添加‘unlink-panels’属性即可

(2)隐藏右侧日历  

.trbd-date-picker-daterange-popper {
		width: 300px;
		margin-left: -20px;
  .el-date-range-picker__content {
			width: 100%;
			border: 0
		}
  .el-picker-panel__body {
			min-width: 300px;
		}
	}

.el-date-range-picker__content.is-right {
		height: 0;
		display: none;
  .el-date-range-picker__header {
			top: -330px;
			left: 210px;
			width: 50px;
		}
  .el-date-range-picker__header div {
			display: none;
		}
		table {
			display: none;
		}
	}

(3)tips:此过程中会遇到一些问题

        a)问题:可能在当前页面中没有生效上诉css,加了穿透也不会生效        

              原因:检查页面是否添加 scoped,如果添加了 scoped ,很可能是他的原因导致的,但是页面中如果去掉的话,可能会对系统中其他位置的样式造成干扰,不建议直接删除;

                        由于此组件是直接渲染在 body 中的,很有可能在当前组件使用页面中,拿不到其 dom ,所以无法更改属性,即使加了穿透也不会生效。

                解决方式:可以新添加一个全局 css ,在需要的位置进行引用即可.

        b)问题:删除右侧日历后,左侧日历第一次打开正常切换,当选择一个时间区间后,再次打开会出现,切换按钮被禁用,无法切换时间

                原因:左侧日历会根据第一次选择的日期,进行重新渲染,导致第二次进入时无法点击切换

                解决方式:添加 @focus="focus" ,实质上是去除标签绑定的 disabled 属性

focus() {

      // 去掉日期选择右上角下一月被禁用

      if(document.getElementsByClassName("el-picker-panel")[0]) {

        let butten = document.getElementsByClassName("el-picker-panel")[0]

                              .getElementsByClassName("is-left")[0]

                              .getElementsByClassName("el-icon-arrow-right")[0];

       butten.classList.remove("is-disabled");

       butten.removeAttribute("disabled");

       // 去掉日期选择右上角下一年 

       let nextYear = document.getElementsByClassName("el-picker-panel")[0]

                              .getElementsByClassName("is-left")[0]

                              .getElementsByClassName("el-icon-d-arrow-right")[0];

       nextYear.classList.remove("is-disabled");

       nextYear.removeAttribute("disabled");

      }

    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一段 Vue.js 中的代码,它用于创建一个日期选择器,其中的 v-model 绑定了选择的日期到 "date" 这个变量。type 设置为 "daterange" 表示这是一个日期范围选择器,range 设置为 "month" 表示只能选择月份。 如果这个日期选择器没有生效,那可能是因为你没有正确地引入组件或者绑定数据有问题。你可以检查一下是否有报错,并尝试调整你的代码。 ### 回答2: 根据给出的代码,问题出在range属性的使用上。 首先要注意到,<el-date-picker>是Element UI中的日期选择器组件,v-model是用来绑定选择的日期数据的。type属性设置为"daterange"表示选择范围内的日期,而range属性设置为"month"表示选择的范围为整个月份。 如果<el-date-picker>组件没有显示出来或没有选择日期的效果,可能是以下原因之一: 1. 未导入Element UI或未正确引入相关的CSS和JS文件; 2. 未正确设置Vue实例中的组件数据,即在data选项中添加了date属性并设置默认值; 3. 没有正确放置<el-date-picker>组件的HTML代码,即没有在Vue实例对应的HTML模板中添加<el-date-picker>组件。 为了解决这些问题,可以按照以下步骤进行调整: 1. 确保已经正确导入Element UI并引入相关的CSS和JS文件。 2. 在Vue实例的data选项中添加一个名为date的属性,并设置默认值,例如:date: ''。 3. 在Vue实例对应的HTML模板中添加<el-date-picker>组件的代码,确保放置在适当的位置,并使用v-model指令将date属性绑定到组件上,例如:<el-date-picker v-model="date" type="daterange" range="month"></el-date-picker>。 如果问题仍然存在,请确保您的项目中包含了Element UI,并且根据官方文档进一步调试查找原因。 ### 回答3: 在使用`<el-date-picker v-model="date" type="daterange" range="month" />`时出现没有效果的问题可能是由于以下几个原因导致的: 1. Vue和Element UI库是否正确引入:首先要确保Vue和Element UI库已经被正确引入到项目中。可以在代码中查看是否有相关的引入语句`import Vue from 'vue'`和`import ElementUI from 'element-ui'`。同时还要确保相关依赖已经安装,例如通过`npm install element-ui --save`方式安装Element UI。 2. 组件是否正确注册:在使用Element UI的组件之前,需要先在Vue中进行组件的注册。可以在代码中查看是否有相关的组件注册语句`Vue.use(ElementUI)`。 3. 是否正确使用`v-model`指令:`v-model`是Vue的指令,它实现了双向绑定的功能。在使用`v-model`指令时,需要确保`date`属性在Vue的实例中正确初始化且正确绑定到相应的日期选择器上。可以在Vue的实例中查看是否有正确的`data`选项和`date`属性的初始化语句,例如`data: { date: '' }`。 4. 是否正确设置`type`和`range`属性:`type`属性用于指定日期选择器的类型,而`range`属性用于指定日期选择的范围。在上述代码中,`type`被设置为`daterange`,表示选择的是一个日期范围,而`range`被设置为`month`,表示选择的是月份范围。需要确保这两个属性被正确设置。 综上所述,检查以上几个可能的原因,进行相应的修改和调试,通常能够解决`<el-date-picker v-model="date" type="daterange" range="month" />`没有效果的问题。如果以上方法无法解决问题,可能需要进一步检查代码的其它部分或查看Element UI官方文档以获取更多信息和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值