vue+elementui 日期时间控件 结束日期不能小于开始日期_element-plus datepicker时间日期组件中的此刻按钮隐藏掉-程序员宅基地

技术标签: 1024程序员节  element项目问题  

目录

一、对于日期控件(简单版):

二、对于日期时间控件(需要禁用时间选择器):

参考: 

代码:

 注意:


一、对于日期控件(简单版):

element-ui 日期选择器 限制结束时间不能大于开始时间_优秀的赵仕广的博客-程序员宅基地<el-date-picker :picker-options='pickerStartOptions(search.endReleaseTime)' v-model="search.startReleaseTime" type="date" value-format="yyyy-MM-dd" placeholder="选择开始日期"></el-date-picker><el-date-picker :picker-options='pickerEndOpthttps://blog.csdn.net/weixin_43863505/article/details/121875924

<el-form-item label="生产日期" prop="manufactureDate">
  <el-date-picker type="date" v-model="searchForm.manufactureDate" placeholder="请输入生产日期" clearable 
      format="yyyy-MM-dd" value-format="yyyy-MM-dd"
      :picker-options='pickerStartOptions(searchForm.deliverDate)'>
  </el-date-picker>
</el-form-item>
<el-form-item label="发货日期" prop="deliverDate">
  <el-date-picker type="date" v-model="searchForm.deliverDate" placeholder="请输入发货日期" clearable 
      format="yyyy-MM-dd" value-format="yyyy-MM-dd"
      :picker-options='pickerEndOptions(searchForm.manufactureDate)'>
  </el-date-picker>
</el-form-item>

  data() {    
    return {
      pickerStartOptions(endTime){
        return {
          disabledDate(time){
            if(endTime){
                // 拼接 00:00:00 是为了统一日期从0点开始 
                return time.getTime() > new Date(endTime + " 00:00:00").getTime();     
            }
          }
        } 
      },
      pickerEndOptions(startTime){
        return {
          disabledDate(time){
            if(startTime){
                // 拼接 00:00:00 是为了统一日期从0点开始 
                return time.getTime() < new Date(startTime + " 00:00:00").getTime();
            }
          }
        } 
	  },
    }
  }

直接复制作者的代码,在他代码的基础上改一下自己定义的参数字段名就可以了 。

二、对于日期时间控件(需要禁用时间选择器):

参考: 

elementui日期选择器控制结束日期不能小于开始日期_鹏仔工作室的博客-程序员宅基地_结束时间不能小于开始时间项目中,有选择开始日期和结束日期的,写好了分享给大家吧!如有问题,请多多指教,谢谢。功能是开始日期可选今日或今日之后的日期,结束日期必须在开始日期之后,用的是elementui,案例分享给大家。我的效果是 报名开始时间(当日起之后)、报名结束时间(报名开始时间之后)、会议开始时间(报名结束时间之后)、会议结束时间(会议开始时间之后)。根据下图所示,选择A之后(清除B、C、D),B只能选择A之后的日期,选择B之后(清除C、D),C只能选择B之后的日期,选择C之后(清除D...https://blog.csdn.net/tianpeng1996/article/details/108800644

vue2 + elementui 日期时间选择器 禁止选择当前时间之前的日期及时间,并添加相应校验规则_前端烤贝猿的博客-程序员宅基地_日期时间选择器设置禁选vue2 + elementui 日期时间选择器 禁止选择当前时间之前的日期及时间,并添加相应校验规则https://blog.csdn.net/weixin_57024354/article/details/122113125

        日期时间控件使用了 disabledDate 来禁用日期后,“此刻” 按钮的功能不起作用,然而点击“确定”按钮就是此刻的时间

element-ui 时间组件date-picker 去掉“此刻”二字_左鞋☆右穿的博客-程序员宅基地_el-date-picker 此刻用element-ui的时间组件时,想去掉“此刻”二字官方文档没有提供去掉这个的属性,网上查了一下,主要是通过给这个标签添加css属性,display:none,来隐藏。但是我在组件内的<style>标签内,添加样式的修改不起作用,写导入符>>>也没效果,因此只能写在全局引入的css文件中。具体做法如下:1、引用<el-date-picker v-model="postData.startDateTime"https://blog.csdn.net/m0_38105640/article/details/120700065

代码:

<el-form-item label="生产日期" prop="manufactureDate">
          <el-date-picker v-model="add1.manufactureDate" align="right" type="datetime" placeholder="选择日期"
              popper-class="no-atTheMoment"
              format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
              :picker-options='pickerAddStart(add1.deliverDate)'
              @change="($event)=>limitDate('start',$event)"></el-date-picker>
</el-form-item>        
<el-form-item label="发货日期" prop="deliverDate">
          <el-date-picker v-model="add1.deliverDate" align="right" type="datetime" placeholder="选择日期"
              popper-class="no-atTheMoment"
              format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
              :picker-options='pickerAddEnd(add1.manufactureDate)'
              @change="($event)=>limitDate('end',$event)"></el-date-picker>
</el-form-item>

<script>
export default {
  data() {    
    return {
      pickerAddStart(endTime) {
        var selectableRange = ""; //可选时间范围
        if(endTime){
          selectableRange = `00:00:00 - ${endTime.split(" ")[1]}`
        } else {
          selectableRange = "00:00:00 - 23:59:59"
        }
        return {
          disabledDate(time){
            if(endTime){
              return time.getTime() > new Date(endTime).getTime();     
            }
          },
          selectableRange: selectableRange
        }
      }, 
      pickerAddEnd(startTime) {
        var selectableRange = "";
        if(startTime){
          selectableRange = `${startTime.split(" ")[1]} - 23:59:59`
        } else {
          selectableRange = "00:00:00 - 23:59:59"
        }
        return {
          disabledDate(time){
            if(startTime){
             // 不加1会出现00:00:00时,结束时间可以选择开始时间的前一天
              return time.getTime() < new Date(startTime).getTime() - 8.64e7 + 1; // - 8.64e7 表示可选择当天时间
            }
          },
          selectableRange: selectableRange
        }
	},
    add1:{
        manufactureDate:"", //开始时间
        deliverDate: "" //结束时间
    }
  },
  methods:{
    // 添加这个方法是因为,点击“确定”按钮会获取到当前时间,不受picker-options的限制并赋值到输入框中
    limitDate(type, date){
      var dateTime = new Date(date).getTime();
      //开始时间的时间戳不能大于结束时间
      if(type=="start" && dateTime && this.add1.deliverDate && dateTime>new Date(this.add1.deliverDate).getTime()){
        this.$message.error("开始时间不能大于结束时间!");
        this.add1.manufactureDate = "";
      }
      if(type=="end" && dateTime && this.add1.manufactureDate && dateTime<new Date(this.add1.manufactureDate).getTime()){
        this.$message.error("结束时间不能小于小产时间!");
        this.add1.deliverDate = "";
      }
    },
  }
}
</script>

<style>
// 时间控件去掉“此刻” 在时间控件上添加 popper-class="no-atTheMoment"
.el-picker-panel.no-atTheMoment .el-button--text.el-picker-panel__link-btn {
  display: none;
}
</style>

 注意:

disabledDate 设置禁用状态,参数为当前日期,要求返回 Boolean
selectableRange 用来限制时分秒的选择
去掉“此刻” 发现使用了 disabledDate 后,“此刻”按钮不起作用了,“确定”按钮功能代替了“此刻”按钮的功能

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Start2019/article/details/127496509

智能推荐

海康威视网络摄像头开发流程(五)------- 直播页面测试_ezuikit 测试的url-程序员宅基地

文章浏览阅读3.8k次。1、将下载好的萤石js插件,添加到SoringBoot项目中。位置可参考下图所示。(容易出错的地方,在将js插件在html页面引入时,发生路径错误的问题)所以如果对页面中引入js的路径不清楚,可参考下图所示存放路径。2、将ezuikit.js引入到demo-live.html中。(可直接将如下代码复制到你创建的html页面中)<!DOCTYPE html><html lan..._ezuikit 测试的url

如何确定组态王与多动能RTU的通信方式_组态王ua-程序员宅基地

文章浏览阅读322次。第二步,在弹出的对话框选择,设备驱动—>PLC—>莫迪康—>ModbusRTU—>COM,根据配置软件选择的协议选期期,这里以此为例,然后点击“下一步”。第四步,把使用虚拟串口打勾(GPRS设备),根据需要选择要生成虚拟口,这里以选择KVCOM1为例,然后点击“下一步”设备ID即Modbus地址(1-255) 使用DTU时,为下485接口上的设备地址。第六步,Modbus的从机地址,与配置软件相同,这里以1为例,点击“下一步“第五步,Modbus的从机地址,与配置软件相同,这里以1为例,点击“下一步“_组态王ua

npm超详细安装(包括配置环境变量)!!!npm安装教程(node.js安装教程)_npm安装配置-程序员宅基地

文章浏览阅读9.4k次,点赞22次,收藏19次。安装npm相当于安装node.js,Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西_npm安装配置

火车头采集器AI伪原创【php源码】-程序员宅基地

文章浏览阅读748次,点赞21次,收藏26次。大家好,小编来为大家解答以下问题,python基础训练100题,python入门100例题,现在让我们一起来看看吧!宝子们还在新手村练级的时候,不单要吸入基础知识,夯实自己的理论基础,还要去实际操作练练手啊!由于文章篇幅限制,不可能将100道题全部呈现在此除了这些,下面还有我整理好的基础入门学习资料,视频和讲解文案都很齐全,用来入门绝对靠谱,需要的自提。保证100%免费这不,贴心的我爆肝给大家整理了这份今天给大家分享100道Python练习题。大家一定要给我三连啊~

Linux Ubuntu 安装 Sublime Text (无法使用 wget 命令,使用安装包下载)_ubuntu 安装sumlime text打不开-程序员宅基地

文章浏览阅读1k次。 为了在 Linux ( Ubuntu) 上安装sublime,一般大家都会选择常见的教程或是 sublime 官网教程,然而在国内这种方法可能失效。为此,需要用安装包安装。以下就是使用官网安装包安装的教程。打开 sublime 官网后,点击右上角 download, 或是直接访问点击打开链接,即可看到各个平台上的安装包。选择 Linux 64 位版并下载。下载后,打开终端,进入安装..._ubuntu 安装sumlime text打不开

CrossOver for Mac 2024无需安装 Windows 即可以在 Mac 上运行游戏 Mac运行exe程序和游戏 CrossOver虚拟机 crossover运行免安装游戏包-程序员宅基地

文章浏览阅读563次,点赞13次,收藏6次。CrossOver24是一款类虚拟机软件,专为macOS和Linux用户设计。它的核心技术是Wine,这是一种在Linux和macOS等非Windows操作系统上运行Windows应用程序的开源软件。通过CrossOver24,用户可以在不购买Windows授权或使用传统虚拟机的情况下,直接在Mac或Linux系统上运行Windows软件和游戏。该软件还提供了丰富的功能,如自动配置、无缝集成和实时传输等,以实现高效的跨平台操作体验。

随便推点

一个用聊天的方式让ChatGPT写的线程安全的环形List_为什么gpt一写list就卡-程序员宅基地

文章浏览阅读1.7k次。一个用聊天的方式让ChatGPT帮我写的线程安全的环形List_为什么gpt一写list就卡

Tomcat自带的设置编码Filter-程序员宅基地

文章浏览阅读336次。我们在前面的文章里曾写过Web应用中乱码产生的原因和处理方式,旧文回顾:深度揭秘乱码问题背后的原因及解决方式其中我们提到可以通过Filter的方式来设置请求和响应的encoding,来解..._filterconfig selectencoding

javascript中encodeURI和decodeURI方法使用介绍_js encodeur decodeurl-程序员宅基地

文章浏览阅读651次。转自:http://www.jb51.net/article/36480.htmencodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为英文编码,decodeURI可以用来把字符还原回来_js encodeur decodeurl

Android开发——打包apk遇到The destination folder does not exist or is not writeable-程序员宅基地

文章浏览阅读1.9w次,点赞6次,收藏3次。前言在日常的Android开发当中,我们肯定要打包apk。但是今天我打包的时候遇到一个很奇怪的问题Android The destination folder does not exist or is not writeable,大意是目标文件夹不存在或不可写。出现问题的原因以及解决办法上面有说报错的中文大意是:目标文件夹不存在或不可写。其实问题就在我们的打包界面当中图中标红的Desti..._the destination folder does not exist or is not writeable

Eclipse配置高大上环境-程序员宅基地

文章浏览阅读94次。一、配置代码编辑区的样式 <1>打开Eclipse,Help —> Install NewSoftware,界面如下: <2>点击add...,按下图所示操作: name:随意填写,Location:http://eclipse-color-th..._ecplise高大上设置

Linux安装MySQL-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle.tar_linux mysql 安装 mysql-5.6.24-1.linux_glibc2.5.x86_6-程序员宅基地

文章浏览阅读2.8k次。一,下载mysql:http://dev.mysql.com/downloads/mysql/; 打开页面之后,在Select Platform:下选择linux Generic,如果没有出现Linux的选项,请换一个浏览器试试。我用的谷歌版本不可以,换一个别的浏览器就行了,如果还是不行,需要换一个翻墙的浏览器。 二,下载完后解压缩并放到安装文件夹下: 1、MySQL-client-5.6.2_linux mysql 安装 mysql-5.6.24-1.linux_glibc2.5.x86_64.rpm-bundle