日期的三级联动(纯js)

<html>
<head>
    <meta charset="UTF-8">
    <title>日期三级联动</title>
    <script>
        //网页加载时初始化年月
        window.οnlοad=function() {
            //初始的每月天数
            m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
            //先给年下拉框赋内容
            for (var i =1970; i <2005; i++)
                document.form.year.options.add(new Option(i , i));
            //赋月份的下拉框
            for (var i = 1; i < 13; i++)
                document.form.month.options.add(new Option( i, i));
        }

        /**
         * 年份发生变化时进行联动
         * @param year
         */
        function yearChange(year)
        {
            //获得下拉列表中月份
            var month = document.form.month.options[document.form.month.selectedIndex].value;
            if (month == "0") {
                var opt = document.form.day;
                dayOptionsClear(opt);
                return;
            }
            if (month == 2 && IsPrimYear(str)) {
                m[month - 1]=29;
            }
            writeDay(m[str - 1]);
        }

        /**
         *根据月份的更改对天数列表联动
         */
        function monthChange(month)
        {
            //获得年份,selectedIndex当前被选择的下标
            var Y= document.form.year.options[document.form.year.selectedIndex].value;
            if (Y== "0") {
                var opt = document.form.day;
                dayOptionsClear(opt);
            }
            if (month == 2 && IsPrimYear(Y)){
                m[month - 1]=29;
            }
            writeDay(m[month - 1]);
        }

        /**
         * 根据参数(当月的天数)添加天数的下拉列表
         * @param day_number
         */
        function writeDay(day_number) {
            var opt = document.form.day;
            dayOptionsClear(opt);
            for (var i = 1; i < (day_number + 1); i++)
                opt.options.add(new Option(i, i));
        }

        /**
         * 判断是否为闰年
         * @param year
         * @returns {boolean}
         * @constructor
         */
        function IsPrimYear(year)
        {
            return (0 == year % 4 && (year % 100 != 0 || year % 400 == 0));
        }

        //清空天数的下拉列表
        function dayOptionsClear(opt) {
            opt.options.length = 1;
        }
    </script>
</head>
<body>
    <form name="form">
        <select name="year" onChange="yearChange(this.value)">
            <option value="0" selected>-请选择-</option>
        </select>年
        <select name="month" onChange="monthChange(this.value)">
            <option value="0" selected>-请选择-</option>
        </select>日
        <select name="day">
            <option value="0" selected>-请选择-</option>
        </select>日
    </form>
</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值