laydate.laydate.render()开始日期和结束日期选择器互相限制选择值动态生效

devtools/2024/10/21 15:29:46/

要解决 先选定结束日期时,开始日期无法受到限制 的问题,需要确保在初始化选择器时,开始日期选择器 在选择结束日期时也会根据选定的结束日期来更新。

核心问题:

  • 目前,当选定结束日期时,开始日期选择器的 minmax 没有正确地被动态更新。
  • 我们需要确保无论是先选定开始日期还是结束日期,两个日期选择器的范围都能相互依赖。

完整解决方案:

<div class="layui-inline"><label class="layui-form-label">日期</label><div class="layui-input-inline"><input type="text" name="start_date" autocomplete="off" value="<?= $dto->start_date ?>" class="layui-input" id="start_date" placeholder="开始日期"></div><div class="layui-input-inline"><input type="text" name="end_date" autocomplete="off" value="<?= $dto->end_date ?>" class="layui-input" id="end_date" placeholder="结束日期"></div>
</div><script src="https://cdn.jsdelivr.net/npm/layui-layer@3.1.0/dist/layer.js"></script>
<script>
layui.use('laydate', function() {var laydate = layui.laydate;var today = new Date(); // 当前日期var minStartDate = new Date(today - 1000 * 60 * 60 * 24 * 30 * 12 * 10);//最后一个数字30可改,30天的意思// 初始化变量var startPicker, endPicker;// 重新渲染开始日期选择器function renderStartPicker(minStartDate, maxStartDate) {startPicker = laydate.render({elem: '#start_date',format: 'yyyy-MM-dd',min: minStartDate ? formatDate(minStartDate) : formatDate(minStartDate),max: maxStartDate ? formatDate(maxStartDate) : formatDate(today),done: function(value, date) {if (value) {var minEndDate = new Date(date.year, date.month - 1, date.date + 1);var maxEndDate = new Date(date.year, date.month - 1, date.date + 28);renderEndPicker(minEndDate, maxEndDate);}}});}// 重新渲染结束日期选择器function renderEndPicker(minEndDate, maxEndDate) {endPicker = laydate.render({elem: '#end_date',format: 'yyyy-MM-dd',min: minEndDate ? formatDate(minEndDate) : formatDate(minStartDate),max: maxEndDate ? formatDate(maxEndDate) : formatDate(today),done: function(value, date) {if (value) {var minStartDate = new Date(date.year, date.month - 1, date.date - 28);var maxStartDate = new Date(date.year, date.month - 1, date.date - 1);renderStartPicker(minStartDate, maxStartDate);}}});}// 初始渲染renderStartPicker(minStartDate, today);renderEndPicker(minStartDate, today);
});
</script>

逻辑分析:

  1. 初始化两个日期选择器

    • renderStartPicker()renderEndPicker() 函数分别用于渲染开始和结束日期选择器。
    • 初始化时,开始日期选择器的最大日期是今天,结束日期选择器没有初始限制。
  2. 选定开始日期后

    • 当用户选定一个开始日期后,结束日期选择器会被限制为该开始日期之后的 1 天到 28 天。
    • renderEndPicker() 通过传入相应的 minmax 重新渲染结束日期选择器。
  3. 选定结束日期后

    • 当用户选定一个结束日期后,开始日期选择器会被限制为该结束日期之前的 1 天到 28 天。
    • renderStartPicker() 通过传入相应的 minmax 重新渲染开始日期选择器。

预期效果:

  • 无论用户先选定 开始日期 还是 结束日期,都会动态更新另外一个日期选择器的可选范围。
  • 选定开始日期后,结束日期只能从该日期后的 1 到 28 天内选择。
  • 选定结束日期后,开始日期只能从该日期前的 1 到 28 天内选择。

http://www.ppmy.cn/devtools/127594.html

相关文章

龙兴物联一体机:设备监测的智能先锋

龙兴物联物联网一体机的崛起 龙兴物联物联网一体机在设备监测领域占据着至关重要的地位。随着科技的不断进步和各行业对设备监测需求的日益增长&#xff0c;龙兴物联物联网一体机以其卓越的性能和广泛的适用性&#xff0c;迅速崛起并成为众多企业和机构的首选。 在当今数字化时…

视频网站开发:Spring Boot框架的深入探索

4 系统设计 4.1系统概要设计 视频网站系统并没有使用C/S结构&#xff0c;而是基于网络浏览器的方式去访问服务器&#xff0c;进而获取需要的数据信息&#xff0c;这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的B/S结构&#xff0c…

力扣2653.滑动窗口的美丽值

给你一个长度为 n 的整数数组 nums &#xff0c;请你求出每个长度为 k 的子数组的 美丽值 。 一个子数组的 美丽值 定义为&#xff1a;如果子数组中第 x 小整数 是 负数 &#xff0c;那么美丽值为第 x 小的数&#xff0c;否则美丽值为 0 。 请你返回一个包含 n - k 1 个整数…

Android Studio简易项目|随机选择器(类似转盘)

一、背景 为了强化对flowlayout流式布局的理解和简易安卓项目架构结构的理解&#xff0c;写一个小项目&#xff0c;随机选择器&#xff0c;控制可见等 二、项目代码 2.1流式布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns…

10.19 RHCSA 作业

关闭防火墙&#xff0c;挂载&#xff0c;安装nginx用nmtui命令配置多ip ip a检测配置是否正确 vim /etc/nginx/conf.d/test ip.conf 配置nginx服务信息 在网站中添加内容 浏览器上测试网页内容

支持国密算法的数字证书-国密SSL证书详解

在互联网中&#xff0c;数字证书作为标志通讯各方身份信息的数字认证而存在&#xff0c;常见的数字证书大都采用国际算法&#xff0c;比如RSA算法、ECC算法、SHA2算法等。随着我国加强网络安全技术自主可控的大趋势&#xff0c;也出现了支持国密算法的数字证书-国密SSL证书。那…

Java的建造师:类和对象是什么?

在Java的世界里&#xff0c;类和对象就像建筑蓝图和实际的房子。类是用来设计和描述某种事物的模板&#xff0c;而对象就是根据这个模板建造出来的实际事物。咱可以把类看成是一张说明书&#xff0c;而对象是根据说明书创建出来的“产品”。 什么是类&#xff1f; 类&#xff…

Spark 基础概念

Apache Spark 是一个快速、分布式的计算系统&#xff0c;用于大规模数据处理和分析。它提供了一个高级 API&#xff0c;用于编写并行处理的任务&#xff0c;可以在大规模集群上运行。 Spark 的基本概念包括以下几个方面&#xff1a; Resilient Distributed Datasets (RDDs)&a…