封装el-date-picker可写入的公共组件

有一天leader说,要把系统的所有日期组件、时间组件都改成可写入的格式,比如选中输入框时清空,输入20180101回车之后必须选中具体日期,并收起下拉控件

没办法,打工人只能开始想办法了,首先封装el-date-picker、el-time-picker的公共组件,通过this.type是否等于time进行判断

其次是可写入,element官方提供了参数,为true既是可以写入的

但是又遇到了问题,在选月和选周情况下,这个参数不起作用。没办法,只能对在两个类型进行差别处理了

直接用js操作dom,简单粗暴

那么这个问题就解决了

其次是获取输入值,这个简单绑定@input即可

至于回车就比较复杂了

所有类型要用正则表达式匹配,然后通过dayjs转化成为element可以识别的形式

代码我就不贴上,这个其实只是繁琐,并不复杂

还有回车收起下拉控件这个需求

直接用@keyup.enter.native这个语法糖绑定原生的input回车键

通过查找element的源码,我发现可以用hidePicker()收起下拉控件,因此这个方法就变成这样

    wordenter () {
      if (this.type === 'time') {
        this.$refs.timePicker.hidePicker()
      } else {
        this.$refs.datePicker.hidePicker()
      }
    }

 大概的思路就是这样,剩下还有再次选中清空输入框,之后怎么回显在下拉控件的问题,这个问题也挺简单,就不细说了

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-date-pickerElement UI库中的一个日期选择器组件,用于在网页中选择日期。它提供了丰富的配置选项和交互功能,可以满足不同场景下的日期选择需求。 封装el-date-picker的步骤如下: 1. 引入Element UI库:在项目中引入Element UI库,可以通过CDN引入或者使用npm安装。 2. 创建封装组件:在Vue组件中创建一个新的组件,可以命名为DatePicker或其他合适的名称。 3. 在组件中使用el-date-picker:在新创建的组件中使用el-date-picker组件,并根据需要配置相关属性和事件。 4. 封装组件的props:根据需要,可以在封装组件中定义props来接收父组件传递的属性值,例如设置默认日期、禁用日期等。 5. 封装组件的事件:根据需要,可以在封装组件中定义事件来向父组件传递选择的日期值或其他相关信息。 6. 样式和布局:根据项目需求,可以对封装组件进行样式和布局的调整。 以下是一个简单的封装el-date-picker的示例代码: ```vue <template> <div> <el-date-picker v-model="selectedDate" :default-value="defaultDate" :disabled-date="disabledDate" @change="handleChange" ></el-date-picker> </div> </template> <script> export default { name: 'DatePicker', props: { defaultDate: { type: Date, default: null } }, data() { return { selectedDate: null } }, methods: { handleChange(date) { this.$emit('select', date); }, disabledDate(time) { // 自定义禁用日期的逻辑 // 返回true表示禁用该日期,返回false表示可选 return time.getTime() < Date.now(); } } } </script> <style scoped> /* 样式调整 */ </style> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值