elementUI的日期选择器携带至今的临时方案

本文介绍了在ElementUI的el-date-picker组件中添加至今选项的思路和步骤,包括DOM修改、data和methods的调整以及样式的class修改。虽然存在如日期选择器初始为空时无清空按钮和样式兼容性问题等缺陷,但提供了临时的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图

在这里插入图片描述

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:本文的大概内容:
在ElementUI的el-date-picker组件中添加至今选项


提示:以下是本篇文章正文内容,下面案例可供参考

一、思路

通过判断点击的 至今 按钮给当前行添加一个is_to_date状态字段,
这个is_to_date有以下功能:

  • 用于控制当前的日期选择器是否是必填,
  • 用于控制placeholder显示 至今 这个字符
  • 给当天的日期组件添加修改placeholder样式的className

二、缺陷

由于出现至今的时候组件的v-model还是空值, 不会出现清空按钮 且【有样式兼容性】

三、使用步骤

1.DOM的修改

<el-form-item 
:prop="'work[' + scope.$index + '].timeRange_e'"
:rules="[{ required: !scope.row.is_to_date, message: '请选择日期', trigger: 'change' }]"
class="w100per" label="" label-width="0">
   <el-date-picker
        v-model="scope.row.timeRange_e"
        :class="{'simulateVue_to_date':scope.row.is_to_date}"
        :picker-options="pickerWorkOptions_e"
        :placeholder="scope.row.is_to_date?'至今':'选择日期'"
        class="w100per simulateVue_to_date--cut-down-padding_left"
        format="yyyy-MM"
        prefix-icon="xxx"
        type="month"
        value-format="yyyy-MM"
        @focus="focus_simulateVue_to_date(scope.row.is_to_date,scope.$index)"
    >
    </el-date-picker>
 </el-form-item>

2.data的修改

  data () {
    let simulateVue = this;
    return {
		// ...
		simulateVue_to_date_i : null,
		pickerWorkOptions_e: {
	        disabledDate: (time) => {
	          let beginDateVal = dayjs().valueOf();
	          if (beginDateVal) {
	            return time.getTime() > beginDateVal;
	          }
	        },
	        shortcuts: [
	          {
	            text: "至今",
	            onClick (picker) {
	              picker.$emit("pick", "");
	              simulateVue.data_set_simulateVue_to_date(simulateVue, simulateVue.simulateVue_to_date_i).then(miu => {
	              });
	            }
	          }
	        ]
      	},
   	 }
}

3.methods的修改

    // dom 获取焦点事件
    focus_simulateVue_to_date (val, i) {
      this.simulateVue_to_date_i = i;
    },
    // data失去焦点事件
    data_set_simulateVue_to_date (_t, i) {
      return new Promise((resolve, reject) => {
        // _t.$forceUpdate();
        this.$nextTick(() => {
          _t.$refs.form.clearValidate([`work[${i}].timeRange_e`]);
          _t.form.work[i].is_to_date = true;
          _t.$set(_t.form.work[i], `is_to_date`, true);
        });
        resolve(1);
      });
    },

4.样式的class修改

将placeholder的color改成#000

.el-date-editor.el-input.el-input--mini.el-input--prefix.el-input--suffix.el-date-editor--month {
  &.simulateVue_to_date {
    .el-input__inner {
      &::-webkit-input-placeholder {
        color: #000;
      }
    }
  }

总结

在这里插入图片描述

必填的判定加入状态来区分, 通过状态来设置placeholder ,上面的缺陷还没有好的方法实现。尤其是至今的删除按钮无法出现

### ElementUI 日期选择器使用指南 #### 基本介绍 ElementUI 的 `el-date-picker` 组件提供了多种类型的日期选取功能,包括单个日期、日期范围的选择等。该组件支持通过点击清空按钮(×),可以将绑定的数据模型设置为空值 null[^1]。 #### 安装与引入 为了能够正常使用此控件,在项目中需先完成 ElementUI 库的整体或按需加载配置。如果采用的是 Vue CLI 创建的应用,则可以在命令行工具里执行如下语句来安装整个库: ```bash npm install element-ui -S ``` 接着按照官方说明文档中的方式全局注册或是局部导入所需的组件即可[^2]。 #### HTML结构定义 下面给出一段简单的HTML模板代码用于展示如何创建一个基本的日历选择框: ```html <template> <div class="block"> <!-- 单一日期 --> <span class="demonstration">默认</span> <el-date-picker v-model="value1" type="date" placeholder="选择日期"></el-date-picker> <!-- 时间区间 --> <span class="demonstration">带快捷选项</span> <el-date-picker v-model="value2" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions"> </el-date-picker> </div> </template> ``` #### JavaScript逻辑处理 配合上述视图层部分,这里提供相应的Vue实例化脚本片段,其中包括初始化数据以及一些辅助属性设定: ```javascript <script> export default { data() { return { value1: '', // 存储单一选中日期 value2: [],// 存储起始和终止两个时间点组成的数组 pickerOptions: { shortcuts: [{ text: '最近一周', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }, { text: '最近一个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); picker.$emit('pick', [start, end]); } }] } }; } }; </script> ``` #### 样式调整 对于样式方面,默认情况下已经包含了较为完善的视觉效果;如果有特殊需求也可以自定义CSS类名来进行个性化定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值