在一些网站的表单中,我们可能需要使用到日期选择器,而日期可以拆分为年、月、日三个部分。在实现日期选择器时,通过使用JavaScript实现年月日表单三级联动可以提高用户体验,使得用户更加方便快捷地选择日期。
实现思路
- 创建三个下拉框,分别对应年、月、日。
- 初始化年份下拉框,设置可选年份范围。
- 监听年份下拉框的变化事件,当年份改变时更新月份下拉框和日期下拉框的可选项。
- 监听月份下拉框的变化事件,当月份改变时更新日期下拉框的可选项。
实现步骤
1. HTML结构
先创建三个下拉框:
<label for="year">年:</label> <select id="year"></select> <label for="month">月:</label> <select id="month"></select> <label for="day">日:</label> <select id="day"></select>
2. 初始化年份下拉框
-- -------------------- ---- ------- ----- ---------- - -------------------------------- ----- ----------- - --- --------------------- ----- ------- - ----------- - --- ----- ------- - ----------- - --- --- ---- ---- - -------- ---- -- -------- ------- - ----- ------ - --------------------------------- ------------ - ----- ------------------ - ----- ------------------------------- -
这里我们初始化了一个可选年份范围,当前年份的前后十年。然后通过循环创建option元素,将每个年份都添加到年份下拉框中。
3. 更新月份和日期下拉框
-- -------------------- ---- ------- ----- ----------- - --------------------------------- ----- --------- - ------------------------------- -------- ----------------------- ------ - ----- ----------- - --- ---------- ------ ------------- --------------------- - --- ------------------- - --- --- ---- - - -- - -- --- ---- - ----- ------ - --------------------------------- ------------ - -- ------------------ - -- -------------------------------- - --- ---- --- - -- --- -- ------------ ------ - ----- ------ - --------------------------------- ------------ - ---- ------------------ - ---- ------------------------------ - - ------------------------------------- -- -- - ----- ------------ - ------------------ ----- ------------- - ------------------- ------------------------------- --------------- --- -------------------------------------- -- -- - ----- ------------ - ------------------ ----- ------------- - ------------------- ------------------------------- --------------- ---
当年份和月份改变时,我们需要更新月份和日期下拉框的可选项。
首先,根据选择的年份和月份计算出该月份的天数。这里我们使用了new Date(year, month, 0)
方法来获取上一个月的最后一天,具体可以参考MDN文档。
然后我们清空月份和日期下拉框的选项,重新创建新的option元素并添加到对应的下拉框中。
最后,我们监听年份和月份下拉框的change事件,当选择改变时调用updateMonthAndDay
函数更新月份和日期下拉框的可选项。
示例代码
完整的示例代码如下:
-- -------------------- ---- ------- ------ --------------------- ------- ------------------- ------ ---------------------- ------- -------------------- ------ -------------------- ------- ------------------ -------- ----- ---------- - -------------------------------- ----- ----------- - --------------------------------- ----- --------- - ------------------------------- ----- ----------- - --- --------------------- ----- ------- - ----------- - --- ----- - ---------------------------------------------------------- -------- --------------------------------------------------------------------------------