年月日三级联动六级联动

本文介绍了在开发中遇到的年月日三级联动日期选择框的实现过程,以及如何应对需求变更,升级为六级联动的日期范围选择器。通过动态创建option和Date对象判断日期,确保联动逻辑正确,同时提到了需求变更带来的挑战和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 问题介绍

最近在开发中遇到一个日期选择的问题,一开始只需要写一个三级联动的年月日下拉框,效果就像这样

这里写的描述

没写css样式,请忽略丑度,直接上手撸代码,代码逻辑挺简单的,就主要用了new option(),来创建option,和使用Date判断当前月的天数ps:(偷懒没写判断闰年)

1:动态创建option

this.day.options.add(new Option(i+"日",i));

主要就是这种方式动态的创建option,使用select添加option
2:使用Date判断是否是闰年

YMD.getCountDays=function (year,month) {
    month = parseInt(month,10);
    var temp = new Date(year,month,0);
    return temp.getDate();
};

这里主要的就是两种方法,使用Date的构造方法,第三个参数0的意思,就是查出month上一个月的最后一天,也就是上个月有多少天,注意:Date 中的month 是从0-11
3:逻辑问题
这方面三级联动没什么需要注意的,只要注意月下拉框有值的前提就是选择了年,日下拉框有值的前提就是年和月下拉框都有值


2 六级联动日期下拉框

1:本来三级联动写完没事了,结果这边代码刚写完,需求变了,变成六级联动了.只想说MMP,六级联动的效果大概就是这样的
这里写图片描述

看到从…到…就应该明白什么意思了,就是一个日期范围,一开始觉得直接添就行了啊,结果发现没那么简单,研究发现主要就是日期大小问题,后面的不能小于前面的日期,这也就是只要前面的下拉框只要变化,后面的下拉框也要跟变,你不能选一个比前面小的日期吧,其他的问题都很好解决

2 :代码越改越乱,直接删了重新封装,这里就不贴代码了,就写一下使用方法

年月日三级联动
html格式
<select name="" id="year"></select>
<select name="" id="month"></select>
<select name="" id="day"></select>
js使用方法
<script>
 var ymd=new YMD('year','month','day');
 ymd.init();
</script>
年月日六级联动
html格式
<select name="" id="year"></select>
<select name="" id="month"></select>
<select name="" id="day"></select>
<br>
<select name="" id="year1"></select>
<select name="" id="month1"></select>
<select name="" id="day1"></select>
<script src="src/index.js"></script>
##js使用方法
<script>
//后面日期的select
 var ymd1=new YMD('year1','month1','day1');
 ymd1.initA();
 // 前面日期的select
 var ymd=new YMD('year','month','day',ymd1);
 ymd.init();
</script>

github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值