JavaScript实现年月日三联动

 <html>
<head runat="server">
    <title>年月日三联动</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <select name="YYYY" onchange="YYYYDD()" id="select">
            <option value="" selected="selected">请选择 年</option>
        </select>
        <select name="MM" onchange="MMDD()">
            <option value="" selected="selected">请选择 月</option>
        </select>
        <select name="DD">
            <option value="" selected="selected">请选择 日</option>
        </select>
    </div>
    </form>

 

    <script language="javascript" type="text/javascript">
        if (document.attachEvent) {
            window.attachEvent(
"onload", YYYYMMDDstart);
        }
        else {
            window.addEventListener("load", YYYYMMDDstart, false);
        }
       
        //绑定年月日
        function YYYYMMDDstart() {
            MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

 

            // 年份下拉框
            var y = new Date().getFullYear();
            for (var i = (y - 30); i < (y + 30); i++)  // 今年为准,加上前后三十年
                document.form1.YYYY.options.add(new Option(" " + i + "年", i));

 

            // 月份下拉框
            for (var i = 1; i < 13; i++)
                document.form1.MM.options.add(new Option(" " + i + "月", i));

            document.form1.YYYY.value = y;

            document.form1.MM.value = new Date().getMonth() + 1;
            var n = MonHead[new Date().getMonth()];

 

            //日期下拉框
            if (new Date().getMonth() == 1 && IsRunYear(YYYYvalue)) {
                n++;
            }
            writeDay(n);
            document.form1.DD.value = new Date().getDate();
        }

 

        // 年发生变化时日期发生变化(主要是判断闰平年)
        function YYYYDD() {
            var YYYYvalue = document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value;
            if (YYYYvalue == "") {
                var eM = document.form1.MM;
                optionsClear(eM);
                var eD = document.form1.DD;
                optionsClear(eD);
                return;
            }
            else {
                var eM = document.form1.MM;
                optionsClear(eM);


                // 月份下拉框
                for (var i = 1; i < 13; i++)
                    document.form1.MM.options.add(new Option(" " + i + "月", i));
            }
            var n = MonHead[1];
            if (IsRunYear(YYYYvalue)) {
                n++;
            }
            writeDay(n);
        }

 

 

        // 月发生变化时日期联动
        function MMDD() {
            var YYYYvalue = document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value;
            var MMvalue = document.form1.MM.options[document.form1.MM.selectedIndex].value;
            if (MMvalue == "") {
                var eD = document.form1.DD;
                optionsClear(eD);
                return;
            }
            var n = MonHead[MMvalue - 1];
            if (MMvalue == 2 && IsRunYear(YYYYvalue)) {
                n++;
            }
            writeDay(n);
        }

 

        // 根据条件写日期的下拉框
        function writeDay(n) {
            var e = document.form1.DD;
            optionsClear(e);
            for (var i = 1; i < (n + 1); i++) {
                e.options.add(new Option(" " + i + " 日", i));
            }
        }

 

        //判断是否为闰年
        function IsRunYear(year) {
            return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        }

 

        // 清空下拉框选项
        function optionsClear(e) {
            e.options.length = 1;
        }
    </script>

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值