年月日联动select下拉菜单

Posted 贺小鸣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了年月日联动select下拉菜单相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        select{
            font:20px/40px \'宋体\';
        }
        option{width: 100px;}
    </style>
</head>
<body>
<div id="box">
    <select name="sel1" id="sel1">
        <option value="year"></option>
    </select>
    <select name="sel2" id="sel2">
        <option value="month"></option>
    </select>
    <select name="sel3" id="sel3">
        <option value="day"></option>
    </select>
    <!--<span id="result"></span>-->
</div>

<script>
    //生成日期
    function creatDate(){
        //生成1900年-2100年
        for(var i = 1900; i<=2100;i++){
            var option = document.createElement(\'option\');
            option.setAttribute(\'value\',i);
            option.innerHTML = i;
            sel1.appendChild(option);
        }
        //生成1月-12月
        for(var i = 1; i <=12; i++){
            var option = document.createElement(\'option\');
            option.setAttribute(\'value\',i);
            option.innerHTML = i;
            sel2.appendChild(option);
        }
        //生成1日—31日
        for(var i = 1; i <=31; i++){
            var option = document.createElement(\'option\');
            option.setAttribute(\'value\',i);
            option.innerHTML = i;
            sel3.appendChild(option);
        }
    }
    creatDate();
    //保存某年某月的天数
    var days;
    //年份点击
    sel1.onclick = function(){
        //月份显示默认值
        sel2.options[0].selected = true;
        //天数显示默认值
        sel3.options[0].selected = true;
    }
    //月份点击
    sel2.onclick = function(){
        //天数显示默认值
        sel3.options[0].selected = true;
        //计算天数的显示范围
        //如果是2月
        if(sel2.value == 2){
            //如果是闰年
            if((sel1.value % 4 === 0 && sel1.value % 100 !== 0)  || sel1.value % 400 === 0){
                days = 29;
                //如果是平年
            }else{
                days = 28;
            }
            //如果是第4、6、9、11月
        }else if(sel2.value == 4 || sel2.value == 6 ||sel2.value == 9 ||sel2.value == 11){
            days = 30;
        }else{
            days = 31;
        }
        //增加或删除天数
        //如果是28天,则删除29、30、31天(即使他们不存在也不报错)
        if(days == 28){
            sel3.remove(31);
            sel3.remove(30);
            sel3.remove(29);
        }
        //如果是29天
        if(days == 29){
            sel3.remove(31);
            sel3.remove(30);
            //如果第29天不存在,则添加第29天
            if(!sel3.options[29]){
                sel3.add(new Option(\'29\',\'29\'),undefined)
            }
        }
        //如果是30天
        if(days == 30){
            sel3.remove(31);
            //如果第29天不存在,则添加第29天
            if(!sel3.options[29]){
                sel3.add(new Option(\'29\',\'29\'),undefined)
            }
            //如果第30天不存在,则添加第30天
            if(!sel3.options[30]){
                sel3.add(new Option(\'30\',\'30\'),undefined)
            }
        }
        //如果是31天
        if(days == 31){
            //如果第29天不存在,则添加第29天
            if(!sel3.options[29]){
                sel3.add(new Option(\'29\',\'29\'),undefined)
            }
            //如果第30天不存在,则添加第30天
            if(!sel3.options[30]){
                sel3.add(new Option(\'30\',\'30\'),undefined)
            }
            //如果第31天不存在,则添加第31天
            if(!sel3.options[31]){
                sel3.add(new Option(\'31\',\'31\'),undefined)
            }
        }
    }

    //结果显示
//    box.onclick = function(){
//        //当年、月、日都已经为设置值时
//        if(sel1.value !=\'year\' && sel2.value != \'month\' && sel3.value !=\'day\'){
//            var day = new Date(sel1.value,sel2.value-1,sel3.value).getDay();
//            result.innerHTML = sel1.value + \'年\' + sel2.value + \'月\' +  sel3.value + \'日\' + \'星期\' + changDay(day);
//        }else{
//            result.innerHTML = \'\';
//        }
//    }
    //星期格式切换
//    function changDay(num){
//        switch(num){
//            case 0:
//                return \'日\';
//            case 1:
//                return \'一\';
//            case 2:
//                return \'二\';
//            case 3:
//                return \'三\';
//            case 4:
//                return \'四\';
//            case 5:
//                return \'五\';
//            case 6:
//                return \'六\';
//        }
//    }
</script>

</body>
</html>

来源 http://www.cnblogs.com/xiaohuochai/p/5877594.html

以上是关于年月日联动select下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

js年月日联动菜单

layui select下拉菜单联动

三级联动下拉菜单

JS年月日三级联动下拉框日期选择代码

设置联动的<select></select>下拉选项菜单的默认值

下拉框两级联动