layui laydate日期初始化的一些坑

layui laydate日期初始化的一些坑

  • 背景
  • 坑一:利用class属性初始化时间控件失败
  • 坑二:后加载页面时间控件初始化失败
  • 坑三:结束时间需要默认追加23:59:59

背景

在日常开发中,总是会不可避免的用到日期插件,不同的日期插件功能上大同小异,UI上也是各有各的特点,个人项目中用的比较的多的时间插件是bootstrap-datetimepicker 插件,日期的UI样式是这样的
在这里插入图片描述
有时候觉得bootstrap-datetimepicker的UI有点看厌了,就会换一下layui 的 laydate 来感受一下,laydate的UI样式是这样的
在这里插入图片描述
今天讲述的问题就是在使用layui laydate时间插件的过程中遇到的一些问题。

坑一:利用class属性初始化时间控件失败

在开发中遇到这样一种情况,页面有多个时间控件,如果每个时间控件都通过元素id去初始化的话,需要写多次,太费劲了,想通过class属性来控制,但是只有第一个生效,效果如下
在这里插入图片描述
页面代码

<div>
        <div class="form-group">
          <label class="col-sm-3 control-label">时间段:</label>
          <div class="col-sm-3">
            <input type="text" class="form-control filter-time" name="startTime" id="startTime" placeholder="开始时间">
          </div>
          <div style="padding-top: 5px;float: left;">--</div>
          <div class="col-sm-3">
            <input type="text" class="form-control filter-time" name="endTime" id="endTime" placeholder="结束时间">
          </div>
        </div>
        <div class="form-group">
          <label class="col-sm-3 control-label">时间段:</label>
          <div class="col-sm-3">
            <input type="text" class="form-control filter-time" name="startTime1" id="startTime1" placeholder="开始时间">
          </div>
          <div style="padding-top: 5px;float: left;">--</div>
          <div class="col-sm-3">
            <input type="text" class="form-control filter-time" name="endTime1" id="endTime1" placeholder="结束时间">
          </div>
        </div>
 </div>

页面js代码

var laydate;
    $(function(){
      layui.use('laydate', function() {
        laydate = layui.laydate;
        laydate.render({
          elem : '.filter-time',
          type: 'datetime',
          trigger : 'click'
        });
      })
 })

通过视频可以看到,通过class属性方式给laydate时间插件初始化elem 的方式只有第一个文本框生效,后面的都不生效,那么此时的解决办法就是遍历给相同class属性的文本框初始化日期插件,更改后的js代码

var laydate;
    $(function(){
      layui.use('laydate', function() {
        laydate = layui.laydate;
        $('.filter-time').each(function() {
          laydate.render({
            elem : this,
            type: 'datetime',
            trigger : 'click'
          });
        });
      })
 })

此时再查看页面效果
在这里插入图片描述

坑二:后加载页面时间控件初始化失败

这时有这样一个需求,就是点击动图中的添加按钮,需要在现有时间控件的下方追加时间控件以及其他参数,追加后的页面如图
在这里插入图片描述
此时追加的元素中时间控件并没有初始化,效果如图
在这里插入图片描述
页面代码如下

<div>
        <div class="form-group">
          <label class="col-sm-3 control-label">时间段:</label>
          <div class="col-sm-3">
            <input type="text" class="form-control filter-time" name="startTime" id="startTime" placeholder="开始时间">
          </div>
          <div style="padding-top: 5px;float: left;">--</div>
          <div class="col-sm-3">
            <input type="text" class="form-control filter-time" name="endTime" id="endTime" placeholder="结束时间">
          </div>
        </div>
        <div class="form-group">
          <label class="col-sm-3 control-label">时间段:</label>
          <div class="col-sm-3">
            <input type="text" class="form-control filter-time" name="startTime1" id="startTime1" placeholder="开始时间">
          </div>
          <div style="padding-top: 5px;float: left;">--</div>
          <div class="col-sm-3">
            <input type="text" class="form-control filter-time" name="endTime1" id="endTime1" placeholder="结束时间">
          </div>
        </div>
      </div>
<div id="container" ></div>

js代码如下

var clicknum = 0;
//点击添加按钮
function addWeight() {
  var html = '<div class="weightdetail" id="weightdetail'+clicknum+'">';
  html += '<div class="form-group"><label class="col-sm-3 control-label">时间段:</label><div class="col-sm-3"><input type="text" class="form-control filter-time" name="startTime" placeholder="开始时间" /></div><div style="padding-top: 5px;float: left;">--</div><div class="col-sm-3"><input type="text" class="form-control filter-time" name="endTime" placeholder="结束时间" /></div><div><button type="button" class="btn btn-danger" onclick="removeweight('+clicknum+',null);">删除</button></div></div>';
  html += '<div class="form-group"><label class="col-sm-3 control-label is-required">转入权重:</label><div class="col-sm-8"><input name="inWeight"  class="form-control" type="text" placeholder="非零开头的最多带两位小数的数字" ></div></div>';
  html += '<div class="form-group"><label class="col-sm-3 control-label is-required">转出权重:</label><div class="col-sm-8"><input name="outWeight"  class="form-control" type="text" placeholder="非零开头的最多带两位小数的数字" ></div></div>';
  html += '<div><hr></div></div>';
  $("#container").append(html);
  clicknum ++;
}

分析原因的话,应该是在打开当前页面是,class属性包含filter-time的元素已经初始化过了,而后面点击添加按钮新追加的页面内容中的时间控件并没有初始化,这时就需要在新追加页面元素结束之后再对时间控件进行一次初始化。修改后的页面js代码如下

var clicknum = [[${count}]];
//点击添加按钮
function addWeight() {
  var html = '<div class="weightdetail" id="weightdetail'+clicknum+'">';
  html += '<div class="form-group"><label class="col-sm-3 control-label">时间段:</label><div class="col-sm-3"><input type="text" class="form-control filter-time" name="startTime" placeholder="开始时间" /></div><div style="padding-top: 5px;float: left;">--</div><div class="col-sm-3"><input type="text" class="form-control filter-time" name="endTime" placeholder="结束时间" /></div><div><button type="button" class="btn btn-danger" onclick="removeweight('+clicknum+',null);">删除</button></div></div>';
  html += '<div class="form-group"><label class="col-sm-3 control-label is-required">转入权重:</label><div class="col-sm-8"><input name="inWeight"  class="form-control" type="text" placeholder="非零开头的最多带两位小数的数字" ></div></div>';
  html += '<div class="form-group"><label class="col-sm-3 control-label is-required">转出权重:</label><div class="col-sm-8"><input name="outWeight"  class="form-control" type="text" placeholder="非零开头的最多带两位小数的数字" ></div></div>';
  html += '<div><hr></div></div>';
  $("#container").append(html);
  $('.filter-time').each(function() {
        laydate.render({
          elem : this,
          type: 'datetime',
          trigger : 'click'
        });
      });
  clicknum ++;
}

这样修改后就可以对后追加的页面时间控件进行初始化,修改后页面效果如图
在这里插入图片描述

坑三:结束时间需要默认追加23:59:59

其实第三个情况不算是坑,而是在使用过程中为了提高工作效率会用到的情况,就是说对于结束时间需要默认匹配 23:59:59,而如果没有指定默认时间的话,默认的时分秒是 00:00:00,比如这样
在这里插入图片描述
那么这个时候如果想给通过添加按钮追加的页面内容的结束时间补充默认时分秒为23:59:59,又该如何修改呢,这里我首先修改结束时间的class属性为filter-time2,同时为js增加默认匹配23:59:59的js补充代码,修改后的js代码如下

//点击添加按钮
function addWeight() {
  var html = '<div class="weightdetail" id="weightdetail'+clicknum+'">';
  html += '<div class="form-group"><label class="col-sm-3 control-label">时间段:</label><div class="col-sm-3"><input type="text" class="form-control filter-time" name="startTime" placeholder="开始时间" /></div><div style="padding-top: 5px;float: left;">--</div><div class="col-sm-3"><input type="text" class="form-control filter-time2" name="endTime" placeholder="结束时间" /></div><div><button type="button" class="btn btn-danger" onclick="removeweight('+clicknum+',null);">删除</button></div></div>';
  html += '<div class="form-group"><label class="col-sm-3 control-label is-required">转入权重:</label><div class="col-sm-8"><input name="inWeight"  class="form-control" type="text" placeholder="非零开头的最多带两位小数的数字" ></div></div>';
  html += '<div class="form-group"><label class="col-sm-3 control-label is-required">转出权重:</label><div class="col-sm-8"><input name="outWeight"  class="form-control" type="text" placeholder="非零开头的最多带两位小数的数字" ></div></div>';
  html += '<div><hr></div></div>';
  $("#container").append(html);
  $('.filter-time').each(function() {
    laydate.render({
      elem : this,
      type: 'datetime',
      trigger : 'click'
    });
  });
  $('.filter-time2').each(function() {
    laydate.render({
      elem : this,
      type: 'datetime',
      trigger : 'click',
      done:function(value) {
        if (value) {
          var split = value.split(" ");
          if (split[1] == "00:00:00") {
            this.dateTime.hours = 23;
            this.dateTime.minutes = 59;
            this.dateTime.seconds = 59;
          }
        }
      }
    });
  });
  clicknum ++;
}

增加的代码部分如图所示
在这里插入图片描述
最后实现的效果如图
在这里插入图片描述
到这里关于本次在使用layui laydate过程中遇到的问题都全部处理完了,记录在这里以备后续查阅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/500195.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IoT网关在智能制造工厂生产线监控与管理中的应用-天拓四方

随着工业4.0时代的到来&#xff0c;智能制造已成为工业发展的重要方向。IoT网关在智能制造工厂中扮演着关键角色&#xff0c;它能够实现设备间的互联互通、数据的实时采集与处理&#xff0c;以及生产线的智能监控与管理。本案例将详细介绍IoT网关在智能制造工厂生产线监控与管理…

100 个 Kotlin 面试问题及答案(其二)

尤其是在Android开发中&#xff0c;Kotlin已经成为一种流行的编程语言。为了帮助您在 Kotlin 面试中取得成功&#xff0c;我们为您简化了 100 个最常见的面试问题。本指南涵盖了广泛的主题&#xff0c;包括基本语言概念和高级功能。每个问题都附有简单的答案和实际示例&#xf…

Spring原理

这次我们来研究Bean的相关知识和spring boot自动配置的相关流程 1.Bean的作用域 1概念 在SpringIoC&DI阶段,我们学习了Spring是如何帮助我们管理对象的. 1. 通过 Controller ,Service , Repository , Component , Configuration , Bean 来声明…

Android R 广播注册与发送流程分析

静态广播注册时序图 动态广播注册时序图 发送广播时序图 前言 广播接收器可以分为动态和静态&#xff0c;静态广播接收器就是在 AndroidManifest.xml 中注册的&#xff0c;而动态的广播接收器是在代码中通过 Context#registerReceiver() 注册的。 这里先从静态广播的流程开始…

Pygame基础6-旋转

6-旋转 当我们想要旋转一个图片的时候&#xff0c; 我们可以使用pygame.transform.rotozoom获得旋转后的图片&#xff1a; kitten pygame.transform.rotozoom(kitten, angle, 1)问题是&#xff0c;每次旋转都会降低图片的质量。如果旋转很多次后&#xff0c;图片的质量会变得…

农村集中式生活污水分质处理及循环利用技术指南

立项单位&#xff1a;生态环境部土壤与农业农村生态环境监管技术中心、山东文远环保科技股份有限公司、北京易境创联环保有限公司、中国环境科学研究院、广东省环境科学研究院、中铁第五勘察设计院集团有限公司、中华环保联合会水环境治理专业委员会 本文件规定了集中式村镇生活…

【动手学深度学习-pytorch】9.2长短期记忆网络(LSTM)

长期以来&#xff0c;隐变量模型存在着长期信息保存和短期输入缺失的问题。 解决这一问题的最早方法之一是长短期存储器&#xff08;long short-term memory&#xff0c;LSTM&#xff09; (Hochreiter and Schmidhuber, 1997)。 它有许多与门控循环单元&#xff08; 9.1节&…

婚恋交友APP小程序H5源码交付-支持二开!实名制交友,可服务器审核,亦可后台自己审核!同城交友,多人语音!

一、需求分析 在征婚交友网站开发初期&#xff0c;需求分析是至关重要的环节。这需要深入了解目标用户的需求和期望&#xff0c;包括他们的年龄、职业、兴趣爱好、交友条件等方面。通过收集和分析这些信息&#xff0c;开发团队可以明确网站的目标用户&#xff0c;并为他们提供…

东特科技现已加入2024第13届国际生物发酵产品与技术装备展

参展企业介绍 温州东特科技有限公司是一家集设计、生产、销售及服务为一体的卫生级流体设备企业。专业从事各种乳食品、制药、化工、啤酒设备、不锈钢卫生级阀门&#xff0c;管件&#xff0c;视镜&#xff0c;及非标配件定制等产品的销售与服务。先进的设计理念专业的技术优势一…

深度思考:雪花算法snowflake分布式id生成原理详解

雪花算法snowflake是一种优秀的分布式ID生成方案&#xff0c;其优点突出&#xff1a;它能生成全局唯一且递增的ID&#xff0c;确保了数据的一致性和准确性&#xff1b;同时&#xff0c;该算法灵活性强&#xff0c;可自定义各部分bit位&#xff0c;满足不同业务场景的需求&#…

使用html实现图片相册展示设计

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图片&#xff08;相册&#xff09;展示设计</title><link rel"stylesheet" href"./style.css"> </head> <b…

SQL--报错注入(join无列名注入)

SQL报错注入 平时在做SQL题时&#xff0c;如果发生语法的错误时&#xff0c;就会产生报错&#xff0c;报错的信息就会显示在前端 报错注入大多是利用函数会报错的特性&#xff0c;将需要的信息通过报错信息回显出来 报错注入函数&#xff08;后面主要的还有一个floor函数暂时…

虚拟机 centos 安装后与主机 ip保持一致

1、安装时 网络模式 悬着自动检测 &#xff08;桥接&#xff09; 2、打开网络 这里如果没有打开 就去 编辑 该文件。把ONBOOTno 改为yes 后 vim /etc/sysconfig/network-scripts/ifcfg-ens160 刷新配置 systemctl restart network 再查看addr 与本机 192.168.31.xx 在同…

Python Flask Web框架初步入门

前言 flask基础 搭建flask服务器 定义html 使用templates模板定义页面的html html页面编写 render_template传参变量 定义图片 创建static目录&#xff0c;存入图片 html编写 flask入门 网站多域名 网站之间超链接跳转 入门案例 将centos的rpm包下载链接集成到自…

13-API风格(下):RPCAPI介绍

RPC在Go项目开发中用得也非常多&#xff0c;需要我们认真掌握。 RPC介绍 根据维基百科的定义&#xff0c;RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;即远程过程调用&#xff0c;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机…

发光二极管限流电阻对电路性能有哪些影响?

目录 1.控制电流 2.稳定电压&#xff08;亮度控制&#xff09; 3.功耗控制&#xff08;保护元件&#xff09; 4.节能控制 发光二极管&#xff08;LED&#xff09;限流电阻在电路中对电路性能主要有以下几个影响&#xff1a; 1.控制电流 限流电阻通过限制电流&#xff0c;使LED工…

WebGIS开发

1.准备工作 高德开发API注册账号&#xff0c;创建项目拿到key和密钥 高德key 2.通过JS API引入高德API <html><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname&quo…

pdf在浏览器上无法正常加载的问题

一、背景 觉得很有意思给大家分享一下。事情是这样的&#xff0c;开发给我反馈说&#xff0c;线上环境接口请求展示pdf异常&#xff0c;此时碰巧我前不久正好在ingress前加了一层nginx&#xff0c;恰逢此时内心五谷杂陈&#xff0c;思路第一时间便放在了改动项。捣鼓了好久无果…

上位机图像处理和嵌入式模块部署(qmacvisual非opencv算法编写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们都知道&#xff0c;qmacvisual本身依赖于qtopencv的实现。大部分的界面都是依赖于qt的实现。图像算法部分&#xff0c;也是大部分都依赖于open…

【最新版RabbitMQ3.13】Linux安装基于源码构建的RabbitMQ教程

前言 linux环境 安装方式有三种&#xff0c;我们这里使用源码安装 Linux下rpm、yum和源码三种安装方式简介 个人语雀首发教程&#xff1a;https://www.yuque.com/wzzz/java/kl2zn22b42svsc6b csdn地址: https://blog.csdn.net/u013625306/article/details/137151862 安装版本…