当前位置: 首页 > news >正文

使用JavaScript实现一个复杂功能:日期范围选择器

日期范围选择器是一个常见的Web应用功能,它允许用户选择一个日期范围。在本篇文章中,我们将使用JavaScript来实现这个功能。

一、实现思路

  1. 创建一个开始日期输入框和一个结束日期输入框。

  2. 添加事件监听器,监听开始日期输入框和结束日期输入框的输入事件。

  3. 当用户在输入框中输入日期时,验证输入的日期是否合法,如果合法,则更新日期范围。

  4. 提供清除日期范围的功能

二、代码实现 

 

<!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应用功能&#xff0c;它允许用户选择一个日期范围。在本篇文章中&#xff0c;我们将使用JavaScript来实现这个功能。 一、实现思路 创建一个开始日期输入框和一个结束日期输入框。 添加事件监听器&#xff0c;监听开始日期输入框和结束日期输入…...

[C#]winform部署openvino调用padleocr模型

【官方框架地址】 https://github.com/PaddlePaddle/PaddleOCR 【算法介绍】 OpenVINO和PaddleOCR都是用于计算机视觉应用的工具&#xff0c;但它们有不同的特点和用途。OpenVINO是一个由Intel开发的开源工具套件&#xff0c;主要用于加速深度学习推理&#xff0c;而PaddleOC…...

【docker-compose】【nginx】内网环境https配置

目录 1、openssl生成自签名证书和私钥2、nginx.conf配置ssl3、docker-compose挂载 1、openssl生成自签名证书和私钥 在部署服务器上&#xff0c;新建cert目录&#xff0c;执行以下指令&#xff0c;然后生成.crt和.key文件 openssl req -newkey rsa:2048 -nodes -keyout rsa_pri…...

大语言模型无代码构建知识图谱概述

2023年3月15日&#xff0c;ChatGPT4.0的横空出世&#xff0c;将人们对大语言模型的关注推到了风口浪尖。由于其在智能问答、翻译以及文本生成等工作任务上的卓越表现&#xff0c;业界一度出现了不再需要发展知识图谱相关技术的观点&#xff0c;知识图谱相关概念严重受挫。无可置…...

链表回文结构

链表回文结构 编写一个函数&#xff0c;检查输入的链表是否是回文的。 示例 1&#xff1a; 输入&#xff1a; 1->2 输出&#xff1a; false 示例 2&#xff1a; 输入&#xff1a; 1->2->2->1 输出&#xff1a; true 链表的回文结构&#xff0c;应该先找到中间节…...

MyBatis框架基础到进阶

1、为什么要学习MyBatis 如果没有MyBatis框架&#xff0c;我们依靠JDBC和连接池已经能够很好的和数据库进行交互了&#xff0c;而学习MyBatis框架最核心的原因是为了减少SQL语句对代码的侵入性。 因为在过往不管是使用连接池还是JDBC Templete&#xff0c;所有的SQL语句都写在代…...

【答案】2023年国赛信息安全管理与评估正式赛答案-模块1任务一

1.根据网络拓扑图所示&#xff0c;按照IP 地址规划表&#xff0c;对防火墙的名称、各接口IP 地址进行配置。共8 分&#xff0c;每错1 处&#xff08;行&#xff09;扣1 分&#xff0c;扣完为止。地址、安全域、接口&#xff08;状态为UP&#xff09;、名称都正确。 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.较大分组的位置 题目链接&#xff1a;830.较大分组的位置 在一个由小写字母构成的字符串 s 中&#xff0c;包含由一些连续的相同字符所构成的分组。 例如&#xff0c;在字符串 s “abbxxxxzyy” 中&#xff0c;就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的…...

【导航】繁星学习随想录

导航&#xff1a;繁星学习随想录 一、编程启示录 01 数据结构漫谈 序号博文名称/链接01扁扁笨算法-AVL树的插入与删除02扁扁笨算法-B树的插入与删除 02 概念小扫盲 序号博文名称/链接01简单理解决策树_如何理解决策树的生长过程-CSDN博客02白盒测试方法与黑盒测试方法简析…...

Oracle 隐式数据类型转换

目录 Oracle类型转换规则&#xff1a; 看如下实验&#xff1a; 1、创建一张表&#xff0c;字段id的类型为number&#xff0c;id字段创建索引&#xff0c;插入一条测试数据 2、我们做如下查询&#xff0c;id的值设置为字符型的1 3、查看执行计划&#xff1a; Oracle类型转换…...

压缩编码之不同缩放参数对重建图像质量的影响的python实现——JPEG变换编码不同压缩率的模拟

原理 JPEG&#xff08;Joint Photographic Experts Group&#xff09;是一种常用的图像压缩标准&#xff0c;它通过采用离散余弦变换&#xff08;DCT&#xff09;和量化来实现图像的压缩。 离散余弦变换&#xff08;DCT&#xff09;&#xff1a; JPEG首先将图像分割成8x8的块…...

大数据导论(2)---大数据与云计算、物联网、人工智能

文章目录 1. 云计算1.1 云计算概念1.2 云计算的服务模式和类型1.3 云计算的数据中心与应用 2. 物联网2.1 物联网的概念和关键技术2.2 物联网的应用和产业2.3 大数据与云计算、物联网的关系 1. 云计算 1.1 云计算概念 1. 首先从商业角度给云计算下一个定义&#xff1a;通过网络…...

有序矩阵中第 K 小的元素

题目链接 有序矩阵中第 K 小的元素 题目描述 注意点 每行和每列元素均按升序排序找到一个内存复杂度优于 O(n) 的解决方案 解答思路 使用二分查找&#xff0c;思路为&#xff1a; &#xff08;1&#xff09;因为左上角的元素值更小&#xff0c;右下角的元素值更大&#xf…...

Nginx详细介绍(并从技术层面深度剖析)

nginx介绍 1.nginx 介绍2.nginx的优势3.Nginx VS Apache3.1.内核、语言、诞生时间比较3.2.功能比较3.3.Nginx 相对 apache 的优点 4.Nginx为什么有这么多的优势&#xff1f;4.1.IO多路复用&#xff08;I/O multiplexing【多并发】&#xff09;4.2.nginx的驱动模型介绍4.3.nginx…...

单元测试基本概念

单元测试一般是开发来做的&#xff0c;但是因为业务需要也曾涉及过单元测试。目前就单元测试的基础概念做下总结。 一、 单元测试定义&#xff1a; 单元测试是软件开发中的一种测试方法&#xff0c;用于验证程序中的最小可测单元——即代码中的单个函数、方法或模块。单元测试…...

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 熵权法是一种基于信息熵概念的权重确定方法&#xff0c;用于多指标决策分析中。信息熵是度量信息量的不确定性或混乱程度的指标&#xff0c;在熵权法中&#xff0c;它用来反映某个指标在评价过程中的分散程度&#xff0c;进而确定该指标的权重。指标的分散程度越高…...

vscode设置terminal的最大行数

今天跑代码出现一个问题&#xff0c;就是整个程序跑完&#xff0c;整个程序的输出信息过多&#xff0c;最开始输出的信息已经被vscode的缓存冲掉了&#xff0c;只能看到最后的一部分&#xff0c;具体的原因是vscode的terminal默认只能保存1000行的信息&#xff0c;所以如果想保…...

kafka hang 问题记录

参考文档 https://cloud.tencent.com/developer/article/1821477 9092端口 端口9092通常与Apache Kafka关联。 Kafka是一个开源的分布式事件流平台&#xff0c;用于构建实时的数据管道和流应用。 它能够处理任意大小的数据&#xff0c;以容错的方式处理数据流。 在默认配置…...

提示词失效?Midjourney印象派出图不稳的8大陷阱,资深AIGC架构师逐帧解析SD/MJ风格迁移差异

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;提示词失效的本质&#xff1a;当语义熵击穿Midjourney的隐空间边界 当“cyberpunk cat wearing neon sunglasses, ultra-detailed, 8k”生成结果突然坍缩为 a blurry humanoid silhouette with cat ears&…...

健康系列: 你缺乏维生素B2吗?什么时候需要使用维生素B2补充剂?

写着玩的&#xff0c;如有疏漏欢迎指出 维生素B2是什么&#xff1f; 维生素B2也叫核黄素&#xff0c;英文是 Riboflavin&#xff0c;属于水溶性维生素B族。 它在体内主要参与能量代谢。身体把碳水、脂肪、蛋白质转化成能量时&#xff0c;需要B2参与。B2还和皮肤、口腔黏膜、眼…...

1987年5月15日中午11-13点出生性格、运势和命运

人们常常对“出生时辰”怀有神秘的好奇&#xff0c;但从现代科学的角度看&#xff0c;出生时间对个体的影响并非玄学&#xff0c;而是可以找到生理学和心理学依据的。1987年4月24日晚上23点到24点之间出生&#xff0c;这个时间点恰好处在夜晚向深夜过渡的时段。抛开任何命理说法…...

Python数据流式处理:Streaming深度解析与实战

Python数据流式处理&#xff1a;Streaming深度解析与实战 引言 在Python开发中&#xff0c;数据流式处理是处理大数据和实时数据的关键技术。作为一名从Rust转向Python的后端开发者&#xff0c;我深刻体会到流式处理在处理海量数据时的优势。Python提供了多种流式处理工具&…...

11. 架构:前端工程化与状态管理实战

写在前面: 如果说后端 MVT 引擎是 GIS 系统的“心脏”,那么前端就是它的“大脑”和“面孔”。在现代 WebGIS 开发中,如何优雅地管理复杂的图层状态、如何处理海量瓦片的渲染逻辑,是决定项目成败的关键。 今天,我们将深入 light-mvt-server 的前端核心,看看如何利用 Vite …...

多语言交易所源码/币币交易+期权交易+永续合约+Defi借贷+新币申购+矿机理财/前端uniapp纯源码+后端php

简介&#xff1a; 多语言交易所源码/币币交易期权交易永续合约Defi借贷新币申购矿机理财/前端uniapp纯源码后端php 语言&#xff1a;7种&#xff0c;看图 前端是uniapp纯源码&#xff0c;只有手机端&#xff0c;后端是php框架&#xff0c;清理了后门的&#xff0c;是最开始蓝…...

揭秘Midjourney V6拟物化失控真相:为什么87%的设计师调不出真实皮革/金属/织物质感?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney V6拟物化失控现象的底层本质 Midjourney V6 引入的拟物化&#xff08;PhotorealismMaterial Fidelity&#xff09;增强机制&#xff0c;并非单纯提升纹理细节&#xff0c;而是通过隐式材质…...

别再手动一个个改了!ArcGIS属性表字段批量删除与数据裁剪的‘偷懒’技巧

ArcGIS高效工作流&#xff1a;属性表与数据批处理的进阶技巧 在GIS工程师的日常工作中&#xff0c;最令人头疼的莫过于那些看似简单却需要重复上百次的操作——删除几十个无用字段、裁剪数百个栅格图层、批量修改投影坐标系。这些机械性劳动不仅消耗时间&#xff0c;更消磨创造…...

Vibe Coding 实战:我用一条 Prompt 指挥 AI “盲盒式”生成 3D 积木物理世界

&#x1f680; Vibe Coding 实战&#xff1a;我用一条 Prompt 指挥 AI “盲盒式”生成 3D 积木物理世界&#xff09;一、 引言&#xff1a;欢迎来到 Vibe Coding 时代1.1 什么是 Vibe Coding&#xff1f;从“一行行敲代码”到“用直觉与语义编程”的范式转变1.2 为什么选择 3D …...

跨境漫游通信解析:全球漫游物联网卡的适配逻辑与行业应用

在跨境物联网行业中&#xff0c;除固定单一国家投放的设备外&#xff0c;有大量终端设备存在跨区域流动、多国家部署、不定向出海的使用需求。车载定位、跨境物流终端、移动式工控、巡回检测设备&#xff0c;这类硬件无法限定单一运营商网络&#xff0c;对多国网络切换、信号漫…...