JavaScript实现年月日表单三级联动

阅读时长 5 分钟读完

在一些网站的表单中,我们可能需要使用到日期选择器,而日期可以拆分为年、月、日三个部分。在实现日期选择器时,通过使用JavaScript实现年月日表单三级联动可以提高用户体验,使得用户更加方便快捷地选择日期。

实现思路

  1. 创建三个下拉框,分别对应年、月、日。
  2. 初始化年份下拉框,设置可选年份范围。
  3. 监听年份下拉框的变化事件,当年份改变时更新月份下拉框和日期下拉框的可选项。
  4. 监听月份下拉框的变化事件,当月份改变时更新日期下拉框的可选项。

实现步骤

1. HTML结构

先创建三个下拉框:

2. 初始化年份下拉框

-- -------------------- ---- -------
----- ---------- - --------------------------------
----- ----------- - --- ---------------------
----- ------- - ----------- - ---
----- ------- - ----------- - ---

--- ---- ---- - -------- ---- -- -------- ------- -
  ----- ------ - ---------------------------------
  ------------ - -----
  ------------------ - -----
  -------------------------------
-

这里我们初始化了一个可选年份范围,当前年份的前后十年。然后通过循环创建option元素,将每个年份都添加到年份下拉框中。

3. 更新月份和日期下拉框

-- -------------------- ---- -------
----- ----------- - ---------------------------------
----- --------- - -------------------------------

-------- ----------------------- ------ -
  ----- ----------- - --- ---------- ------ -------------
  --------------------- - ---
  ------------------- - ---

  --- ---- - - -- - -- --- ---- -
    ----- ------ - ---------------------------------
    ------------ - --
    ------------------ - --
    --------------------------------
  -

  --- ---- --- - -- --- -- ------------ ------ -
    ----- ------ - ---------------------------------
    ------------ - ----
    ------------------ - ----
    ------------------------------
  -
-

------------------------------------- -- -- -
  ----- ------------ - ------------------
  ----- ------------- - -------------------
  ------------------------------- ---------------
---

-------------------------------------- -- -- -
  ----- ------------ - ------------------
  ----- ------------- - -------------------
  ------------------------------- ---------------
---

当年份和月份改变时,我们需要更新月份和日期下拉框的可选项。

首先,根据选择的年份和月份计算出该月份的天数。这里我们使用了new Date(year, month, 0)方法来获取上一个月的最后一天,具体可以参考MDN文档

然后我们清空月份和日期下拉框的选项,重新创建新的option元素并添加到对应的下拉框中。

最后,我们监听年份和月份下拉框的change事件,当选择改变时调用updateMonthAndDay函数更新月份和日期下拉框的可选项。

示例代码

完整的示例代码如下:

-- -------------------- ---- -------
------ ---------------------
------- -------------------

------ ----------------------
------- --------------------

------ --------------------
------- ------------------

--------
----- ---------- - --------------------------------
----- ----------- - ---------------------------------
----- --------- - -------------------------------
----- ----------- - --- ---------------------
----- ------- - ----------- - ---
-----

- ---------------------------------------------------------- --------
--------------------------------------------------------------------------------
纠错
反馈