本文介绍如何使用原生 javascript 实现表单中“创建日期”与“月份数”联动更新“到期日期”,支持自动处理月末边界(如1月31日+1个月→2月28/29日),并确保日期格式兼容 html5 `` 及后端 php/mysql 存储。
在构建任务管理、合同登记或工单系统等业务表单时,常需根据「创建日期」和用户输入的「月份数」自动推算「到期日期」。HTML 原生 要求值为 YYYY-MM-DD 格式,而 JavaScript 的 Date 对象直接加月可能引发日期溢出问题(例如 2025-01-31 加 1 个月会错误变为 2025-03-02)。以下方案提供健壮、无依赖的解决方案:
// 获取 DOM 元素
const dateCreated = document.getElementById("date-created");
const amtOfMonths = document.getElementById("amt-of-months");
const dueDateInput = document.getElement
ById("due-date");
// 监听两个输入字段的变化
dateCreated.addEventListener("change", updateDueDate);
amtOfMonths.addEventListener("change", updateDueDate);
function updateDueDate() {
// 确保两个字段均有有效值
if (!dateCreated.value || !amtOfMonths.value) {
dueDateInput.value = "";
return;
}
const dueDate = addMonths(dateCreated.value, parseInt(amtOfMonths.value, 10));
dueDateInput.value = formatDateForInput(dueDate); // 输出 YYYY-MM-DD
}
// 安全地为日期添加指定月数(自动处理月末天数变化)
function addMonths(dateString, months) {
const date = new Date(dateString);
const originalDay = date.getDate();
// 先加月数
date.setMonth(date.getMonth() + months);
// 若目标月份该日不存在(如1月31日→2月),则回退到最后一天
if (date.getDate() !== originalDay) {
date.setDate(0); // 设为上月最后一天
}
return date;
}
// 将 Date 对象转为标准 HTML5 date 输入所需格式:YYYY-MM-DD
function formatDateForInput(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
return `${year}-${month}-${day}`;
}此方案零依赖、语义清晰、边界处理严谨,可直接集成至现有 HTML 表单,为后续 PHP 数据持久化提供干净、标准化的日期输入。
# mysql
# php
# javascript
# java
# html
# html5
# 后端
# 表单提交
# yy
相关文章:
如何在阿里云部署织梦网站?
如何在建站之星绑定自定义域名?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
建站主机如何安装配置?新手必看操作指南
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
XML的“混合内容”是什么 怎么用DTD或XSD定义
c# 在高并发下使用反射发射(Reflection.Emit)的性能
建站之星如何通过成品分离优化网站效率?
制作网页的网站有哪些,电脑上怎么做网页?
制作网站怎么制作,*游戏网站怎么搭建?
存储型VPS适合搭建中小型网站吗?
建站之星ASP如何实现CMS高效搭建与安全管理?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在IIS中新建站点并配置端口与物理路径?
*服务器网站为何频现安全漏洞?
建站之星后台密码遗忘如何找回?
专业商城网站制作公司有哪些,pi商城官网是哪个?
家具网站制作软件,家具厂怎么跑业务?
已有域名如何免费搭建网站?
Android自定义控件实现温度旋转按钮效果
如何基于云服务器快速搭建个人网站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何配置WinSCP新建站点的密钥验证步骤?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
建站之星如何优化SEO以实现高效排名?
如何在IIS中配置站点IP、端口及主机头?
如何用已有域名快速搭建网站?
如何通过商城免费建站系统源码自定义网站主题?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
制作门户网站的参考文献在哪,小说网站怎么建立?
建站之星安装后如何配置SEO及设计样式?
Swift中循环语句中的转移语句 break 和 continue
如何在香港免费服务器上快速搭建网站?
相册网站制作软件,图片上的网址怎么复制?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何通过主机屋免费建站教程十分钟搭建网站?
香港服务器租用费用高吗?如何避免常见误区?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
名字制作网站免费,所有小说网站的名字?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
如何在阿里云虚拟主机上快速搭建个人网站?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
家庭服务器如何搭建个人网站?
如何选择域名并搭建高效网站?
如何高效完成自助建站业务培训?
建站主机与服务器功能差异如何区分?
*请认真填写需求信息,我们会在24小时内与您取得联系。