使用JavaScript实现一个复杂功能:日期范围选择器
日期范围选择器是一个常见的Web应用功能,它允许用户选择一个日期范围。在本篇文章中,我们将使用JavaScript来实现这个功能。
一、实现思路
-
创建一个开始日期输入框和一个结束日期输入框。
-
添加事件监听器,监听开始日期输入框和结束日期输入框的输入事件。
-
当用户在输入框中输入日期时,验证输入的日期是否合法,如果合法,则更新日期范围。
-
提供清除日期范围的功能
二、代码实现
<!DOCTYPE html>
<html>
<head> <title>日期范围选择器</title>
</head>
<body> <!-- 开始日期输入框 --> <label for="start-date">开始日期:</label> <input type="date" id="start-date" oninput="validateDateRange()"> <!-- 当输入框内容变化时,调用validateDateRange函数 --> <br> <!-- 结束日期输入框 --> <label for="end-date">结束日期:</label> <input type="date" id="end-date" oninput="validateDateRange()"> <!-- 当输入框内容变化时,调用validateDateRange函数 --> <br> <!-- 清除日期范围按钮 --> <button onclick="clearDateRange()">清除日期范围</button> <!-- 当按钮被点击时,调用clearDateRange函数 --> <p id="date-range"></p> <!-- 用于显示日期范围的段落 --> <script> // 验证日期范围的函数 function validateDateRange() { // 获取开始日期和结束日期的值,并尝试将它们转换为Date对象 var startDate = new Date(document.getElementById("start-date").value); var endDate = new Date(document.getElementById("end-date").value); // 检查开始日期和结束日期是否有效(不是NaN) var isStartDateValid = !isNaN(startDate.getTime()); var isEndDateValid = !isNaN(endDate.getTime()); // 如果开始日期和结束日期都有效,则进行下一步验证 if (isStartDateValid && isEndDateValid) { // 检查结束日期是否早于开始日期,如果是,则弹出警告并清空结束日期输入框 if (endDate < startDate) { alert("结束日期不能早于开始日期"); document.getElementById("end-date").value = ""; } else { // 如果结束日期不早于开始日期,则显示日期范围 document.getElementById("date-range").innerText = "日期范围: " + startDate.toISOString().slice(0, 10) + " - " + endDate.toISOString().slice(0, 10); } } else { // 如果开始日期或结束日期无效,则清空显示区域 document.getElementById("date-range").innerText = ""; } } // 清除日期范围的函数 function clearDateRange() { // 清空开始日期和结束日期输入框的值 document.getElementById("start-date").value = ""; document.getElementById("end-date").value = ""; // 清空显示区域的内容 document.getElementById("date-range").innerText = ""; } </script>
</body>
</html>
为了将当前日期转换为农历日期,我们需要使用一个外部库,例如 "lunar-js"。以下是如何使用这个库来实现这个功能:
首先,安装 "lunar-js" 库:
npm install lunar-js
然后,在HTML中引入这个库:
<script src="node_modules/lunar-js/dist/lunar.min.js"></script>
接下来,添加一个新的函数来将当前日期转换为农历日期
<script> // 引入lunar库 const Lunar = window.Lunar; // 创建Lunar实例 const lunar = new Lunar(); // 转换当前日期为农历日期的函数 function getLunarDate() { const currentDate = new Date(); // 获取当前日期 const lunarDate = lunar.convertSolarToLunar(currentDate); // 将当前日期转换为农历日期 return lunarDate; // 返回农历日期 }
</script>
现在,你可以在HTML中调用这个函数并显示农历日期:
<p id="lunar-date"></p> <!-- 用于显示农历日期的段落 -->
<script> document.getElementById("lunar-date").innerText = getLunarDate().getLongYear() + "年" + getLunarDate().getMonth() + "月" + getLunarDate().getDay() + "日"; // 显示农历日期和月份
</script>
相关文章:
使用JavaScript实现一个复杂功能:日期范围选择器
日期范围选择器是一个常见的Web应用功能,它允许用户选择一个日期范围。在本篇文章中,我们将使用JavaScript来实现这个功能。 一、实现思路 创建一个开始日期输入框和一个结束日期输入框。 添加事件监听器,监听开始日期输入框和结束日期输入…...
[C#]winform部署openvino调用padleocr模型
【官方框架地址】 https://github.com/PaddlePaddle/PaddleOCR 【算法介绍】 OpenVINO和PaddleOCR都是用于计算机视觉应用的工具,但它们有不同的特点和用途。OpenVINO是一个由Intel开发的开源工具套件,主要用于加速深度学习推理,而PaddleOC…...
【docker-compose】【nginx】内网环境https配置
目录 1、openssl生成自签名证书和私钥2、nginx.conf配置ssl3、docker-compose挂载 1、openssl生成自签名证书和私钥 在部署服务器上,新建cert目录,执行以下指令,然后生成.crt和.key文件 openssl req -newkey rsa:2048 -nodes -keyout rsa_pri…...
大语言模型无代码构建知识图谱概述
2023年3月15日,ChatGPT4.0的横空出世,将人们对大语言模型的关注推到了风口浪尖。由于其在智能问答、翻译以及文本生成等工作任务上的卓越表现,业界一度出现了不再需要发展知识图谱相关技术的观点,知识图谱相关概念严重受挫。无可置…...
链表回文结构
链表回文结构 编写一个函数,检查输入的链表是否是回文的。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 链表的回文结构,应该先找到中间节…...
MyBatis框架基础到进阶
1、为什么要学习MyBatis 如果没有MyBatis框架,我们依靠JDBC和连接池已经能够很好的和数据库进行交互了,而学习MyBatis框架最核心的原因是为了减少SQL语句对代码的侵入性。 因为在过往不管是使用连接池还是JDBC Templete,所有的SQL语句都写在代…...
【答案】2023年国赛信息安全管理与评估正式赛答案-模块1任务一
1.根据网络拓扑图所示,按照IP 地址规划表,对防火墙的名称、各接口IP 地址进行配置。共8 分,每错1 处(行)扣1 分,扣完为止。地址、安全域、接口(状态为UP)、名称都正确。 2.根据网络…...
【REMB 】翻译:草案remb-03
REMB REMB消息 以及 绝对时间戳选项 在带宽估计中的使用 :an absolute-value timestamp option for use in bandwidth estimatoin. 接收方带宽估计的RTCP消息 REMB 这位大神翻译的更好。 RTCP message for Receiver Estimated Maximum Bitrate draft-alvestrand-rmcat-remb-03…...
力扣(leetcode)第830题较大分组的位置(Python)
830.较大分组的位置 题目链接:830.较大分组的位置 在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。 例如,在字符串 s “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的…...
【导航】繁星学习随想录
导航:繁星学习随想录 一、编程启示录 01 数据结构漫谈 序号博文名称/链接01扁扁笨算法-AVL树的插入与删除02扁扁笨算法-B树的插入与删除 02 概念小扫盲 序号博文名称/链接01简单理解决策树_如何理解决策树的生长过程-CSDN博客02白盒测试方法与黑盒测试方法简析…...
Oracle 隐式数据类型转换
目录 Oracle类型转换规则: 看如下实验: 1、创建一张表,字段id的类型为number,id字段创建索引,插入一条测试数据 2、我们做如下查询,id的值设置为字符型的1 3、查看执行计划: Oracle类型转换…...
压缩编码之不同缩放参数对重建图像质量的影响的python实现——JPEG变换编码不同压缩率的模拟
原理 JPEG(Joint Photographic Experts Group)是一种常用的图像压缩标准,它通过采用离散余弦变换(DCT)和量化来实现图像的压缩。 离散余弦变换(DCT): JPEG首先将图像分割成8x8的块…...
大数据导论(2)---大数据与云计算、物联网、人工智能
文章目录 1. 云计算1.1 云计算概念1.2 云计算的服务模式和类型1.3 云计算的数据中心与应用 2. 物联网2.1 物联网的概念和关键技术2.2 物联网的应用和产业2.3 大数据与云计算、物联网的关系 1. 云计算 1.1 云计算概念 1. 首先从商业角度给云计算下一个定义:通过网络…...
有序矩阵中第 K 小的元素
题目链接 有序矩阵中第 K 小的元素 题目描述 注意点 每行和每列元素均按升序排序找到一个内存复杂度优于 O(n) 的解决方案 解答思路 使用二分查找,思路为: (1)因为左上角的元素值更小,右下角的元素值更大…...
Nginx详细介绍(并从技术层面深度剖析)
nginx介绍 1.nginx 介绍2.nginx的优势3.Nginx VS Apache3.1.内核、语言、诞生时间比较3.2.功能比较3.3.Nginx 相对 apache 的优点 4.Nginx为什么有这么多的优势?4.1.IO多路复用(I/O multiplexing【多并发】)4.2.nginx的驱动模型介绍4.3.nginx…...
单元测试基本概念
单元测试一般是开发来做的,但是因为业务需要也曾涉及过单元测试。目前就单元测试的基础概念做下总结。 一、 单元测试定义: 单元测试是软件开发中的一种测试方法,用于验证程序中的最小可测单元——即代码中的单个函数、方法或模块。单元测试…...
ECTouch 电商微信小程序 SQL注入漏洞复现(CVE-2023-39560)
0x01 产品简介 ECTouch是一款开源的电商系统,为中小企业提供最佳的新零售解决方案 0x02 漏洞概述 ECTouch 电商系统 /ectouch-main/include/apps/default/helpers/insert.php 文件中第285行的 insert_bought_notes 函数中,传入的 $arr[id] 参数未进行验证和过滤,导致未经…...
MCM备赛笔记——熵权法
Key Concept 熵权法是一种基于信息熵概念的权重确定方法,用于多指标决策分析中。信息熵是度量信息量的不确定性或混乱程度的指标,在熵权法中,它用来反映某个指标在评价过程中的分散程度,进而确定该指标的权重。指标的分散程度越高…...
vscode设置terminal的最大行数
今天跑代码出现一个问题,就是整个程序跑完,整个程序的输出信息过多,最开始输出的信息已经被vscode的缓存冲掉了,只能看到最后的一部分,具体的原因是vscode的terminal默认只能保存1000行的信息,所以如果想保…...
kafka hang 问题记录
参考文档 https://cloud.tencent.com/developer/article/1821477 9092端口 端口9092通常与Apache Kafka关联。 Kafka是一个开源的分布式事件流平台,用于构建实时的数据管道和流应用。 它能够处理任意大小的数据,以容错的方式处理数据流。 在默认配置…...
提示词失效?Midjourney印象派出图不稳的8大陷阱,资深AIGC架构师逐帧解析SD/MJ风格迁移差异
更多请点击: https://codechina.net 第一章:提示词失效的本质:当语义熵击穿Midjourney的隐空间边界 当“cyberpunk cat wearing neon sunglasses, ultra-detailed, 8k”生成结果突然坍缩为 a blurry humanoid silhouette with cat ears&…...
健康系列: 你缺乏维生素B2吗?什么时候需要使用维生素B2补充剂?
写着玩的,如有疏漏欢迎指出 维生素B2是什么? 维生素B2也叫核黄素,英文是 Riboflavin,属于水溶性维生素B族。 它在体内主要参与能量代谢。身体把碳水、脂肪、蛋白质转化成能量时,需要B2参与。B2还和皮肤、口腔黏膜、眼…...
1987年5月15日中午11-13点出生性格、运势和命运
人们常常对“出生时辰”怀有神秘的好奇,但从现代科学的角度看,出生时间对个体的影响并非玄学,而是可以找到生理学和心理学依据的。1987年4月24日晚上23点到24点之间出生,这个时间点恰好处在夜晚向深夜过渡的时段。抛开任何命理说法…...
Python数据流式处理:Streaming深度解析与实战
Python数据流式处理:Streaming深度解析与实战 引言 在Python开发中,数据流式处理是处理大数据和实时数据的关键技术。作为一名从Rust转向Python的后端开发者,我深刻体会到流式处理在处理海量数据时的优势。Python提供了多种流式处理工具&…...
11. 架构:前端工程化与状态管理实战
写在前面: 如果说后端 MVT 引擎是 GIS 系统的“心脏”,那么前端就是它的“大脑”和“面孔”。在现代 WebGIS 开发中,如何优雅地管理复杂的图层状态、如何处理海量瓦片的渲染逻辑,是决定项目成败的关键。 今天,我们将深入 light-mvt-server 的前端核心,看看如何利用 Vite …...
多语言交易所源码/币币交易+期权交易+永续合约+Defi借贷+新币申购+矿机理财/前端uniapp纯源码+后端php
简介: 多语言交易所源码/币币交易期权交易永续合约Defi借贷新币申购矿机理财/前端uniapp纯源码后端php 语言:7种,看图 前端是uniapp纯源码,只有手机端,后端是php框架,清理了后门的,是最开始蓝…...
揭秘Midjourney V6拟物化失控真相:为什么87%的设计师调不出真实皮革/金属/织物质感?
更多请点击: https://intelliparadigm.com 第一章:Midjourney V6拟物化失控现象的底层本质 Midjourney V6 引入的拟物化(PhotorealismMaterial Fidelity)增强机制,并非单纯提升纹理细节,而是通过隐式材质…...
别再手动一个个改了!ArcGIS属性表字段批量删除与数据裁剪的‘偷懒’技巧
ArcGIS高效工作流:属性表与数据批处理的进阶技巧 在GIS工程师的日常工作中,最令人头疼的莫过于那些看似简单却需要重复上百次的操作——删除几十个无用字段、裁剪数百个栅格图层、批量修改投影坐标系。这些机械性劳动不仅消耗时间,更消磨创造…...
Vibe Coding 实战:我用一条 Prompt 指挥 AI “盲盒式”生成 3D 积木物理世界
🚀 Vibe Coding 实战:我用一条 Prompt 指挥 AI “盲盒式”生成 3D 积木物理世界)一、 引言:欢迎来到 Vibe Coding 时代1.1 什么是 Vibe Coding?从“一行行敲代码”到“用直觉与语义编程”的范式转变1.2 为什么选择 3D …...
跨境漫游通信解析:全球漫游物联网卡的适配逻辑与行业应用
在跨境物联网行业中,除固定单一国家投放的设备外,有大量终端设备存在跨区域流动、多国家部署、不定向出海的使用需求。车载定位、跨境物流终端、移动式工控、巡回检测设备,这类硬件无法限定单一运营商网络,对多国网络切换、信号漫…...
