本文介绍如何使用原生 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
相关文章:
宿州网站制作公司兴策,安徽省低保查询网站?
制作营销网站公司,淘特是干什么用的?
*服务器网站为何频现安全漏洞?
婚礼视频制作网站,学习*后期制作的网站有哪些?
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
高防服务器:AI智能防御DDoS攻击与数据安全保障
建站主机选购指南与交易推荐:核心配置解析
网站制作软件免费下载安装,有哪些免费下载的软件网站?
建站主机空间推荐 高性价比配置与快速部署方案解析
高端云建站费用究竟需要多少预算?
如何通过宝塔面板实现本地网站访问?
利用JavaScript实现拖拽改变元素大小
上海网站制作开发公司,上海买房比较好的网站有哪些?
建站之星如何实现网站加密操作?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何做网站制作流程,*游戏网站怎么搭建?
详解jQuery中基本的动画方法
如何在IIS7中新建站点?详细步骤解析
如何在建站宝盒中设置产品搜索功能?
建站之星免费模板:自助建站系统与智能响应式一键生成
韩国服务器如何优化跨境访问实现高效连接?
如何在云主机快速搭建网站站点?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何通过免费商城建站系统源码自定义网站主题与功能?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
如何选择最佳自助建站系统?快速指南解析优劣
建站之星后台密码遗忘或太弱?如何重置与强化?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
如何高效配置IIS服务器搭建网站?
存储型VPS适合搭建中小型网站吗?
如何快速搭建高效WAP手机网站?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
焦点电影公司作品,电影焦点结局是什么?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何快速搭建二级域名独立网站?
如何选择高效便捷的WAP商城建站系统?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Python如何创建带属性的XML节点
建站主机服务器选购指南:轻量应用与VPS配置解析
如何在IIS中新建站点并配置端口与物理路径?
建站之星后台密码遗忘?如何快速找回?
如何快速搭建虚拟主机网站?新手必看指南
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
高防服务器租用首荐平台,企业级优惠套餐快速部署
建站主机CVM配置优化、SEO策略与性能提升指南
Android自定义控件实现温度旋转按钮效果
*请认真填写需求信息,我们会在24小时内与您取得联系。