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

用Html实现人人人人网注册界面 ,Js实现生日栏表单三级联动

1. 效果
动态效果.gif
2.Html代码部分
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>人人网日期表单联动</title>
    <style>
        select
        {
            font:20px/40px '宋体';
        }
        option  {width: 100px;}
    </style>
</head>
<body>
<form method = "get" onchange="changeMonth()">
    <b><h3 align="center">
        免费开通人人网账号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </h3></b>

    <table align="center" height = "500">

        <tr ><td>注册邮箱:&nbsp;&nbsp;&nbsp;&nbsp; </td><td> <input type = "text" name = "name"/></td></tr>
        <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>你还可以使用&nbsp;<a href="https://www.baidu.com">账号</a>&nbsp;
            注册或者&nbsp;<a href="https://www.baidu.com">手机号</a>&nbsp;注册</td></tr>

        <tr><td>创建密码: &nbsp;&nbsp;&nbsp;&nbsp;</td><td><input type = "password" name = "password"/></td></tr>

        <tr><td>真实姓名: &nbsp;&nbsp;&nbsp;&nbsp;</td><td><input type = "password" name = "name"/></td>

        <tr><td align="right">性别:&nbsp;&nbsp;&nbsp;&nbsp;</td><td>男<input type = "radio" value = "male" name = "gender"/>
            &nbsp;女<input type = "radio" value = "female" name = "gender"/></td></tr>

        <tr><td align="right">生日:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td>

        <div id="box">
            <select name="sel1" id="sel1">
                <option value="year">年</option>
            </select>&nbsp;
            <select name="sel2" id="sel2">
                <option value="month">月</option>
            </select>&nbsp;
            <select name="sel3" id="sel3">
                <option value="day">日</option>
            </select>
            <span id="result"></span>
        </div></td></tr>



        <tr><td align="right">我现在:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
            <td><select name = "subject">
                <option value = "xu">正在上学</option>
                <option value = "cz">工作</option>
                <option value = "gz">赋闲</option>
                <option value = "bk">经商</option>
            </select></td></tr>

        <tr><td></td><td>![](verycode.gif)&nbsp;&nbsp;&nbsp;<a href="https://www.baidu.com">看不清换一张?</a>
        </td></tr>
        <tr><td>验证码:</td><td><input type = "password" name = "yanzheng"/></td></tr>
        <tr><td></td><td><a href="https://www.baidu.com"> ![](btn_reg.gif)</a></td></tr>
    </table>
</form>
</body>
</html>

3.JavaScript代码
        <script>
            //生成日期
            function creatDate()
            {
                //生成1900年-2100年
                for(var i = 2016; i >= 1950; i--)
                {
                    //创建select项
                    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 option1 = document.createElement('option');
                    option1.setAttribute('value',i);
                    option1.innerHTML = i;
                    sel2.appendChild(option1);
                }
                //生成1日—31日
                for(var i = 1; i <=31; i++){
                    var option2 = document.createElement('option');
                    option2.setAttribute('value',i);
                    option2.innerHTML = i;
                    sel3.appendChild(option2);
                }
            }
            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;
                    }
                    //判断小月
                }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'),null)
                    }
                }
                //如果是30天
                if(days == 30){
                    sel3.remove(31);
                    //如果第29天不存在,则添加第29天
                    if(!sel3.options[29]){
                        sel3.add(new Option('29','29'),null)
                    }
                    //如果第30天不存在,则添加第30天
                    if(!sel3.options[30]){
                        sel3.add(new Option('30','30'),null)
                    }
                }
                //如果是31天
                if(days == 31){
                    //如果第29天不存在,则添加第29天
                    if(!sel3.options[29])
                    {
                        sel3.add(new Option('29','29'),null)
                    }
                    //如果第30天不存在,则添加第30天
                    if(!sel3.options[30])
                    {
                        sel3.add(new Option('30','30'),null)
                    }
                    //如果第31天不存在,则添加第31天
                    if(!sel3.options[31])
                    {
                        sel3.add(new Option('31','31'),null)
                    }
                }
            }

            //结果显示 设置好日期时间后 弹窗通知
            box.onclick = function()
             {
             //当年、月、日都已经为设置值时
             if(sel1.value !='year' && sel2.value != 'month' && sel3.value !='day')
             {
                 alert("日期时间已经设定好");
             }
             }

        </script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,431评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 初到温哥华,发觉空气清新、气候宜人,确实一个生活的好地方。渐渐的,却发现有点不好——就是那令人讨厌的雨季。本人原来...
    游闲温哥华阅读 1,167评论 4 3
  • 冯小刚的《我不是潘金莲》正在上映,朋友圈一水儿的叫好声,不过我还没看,也不知好不好,但是刘震云还是很喜欢的,当时《...
    齐婴宁阅读 925评论 0 3
  • 今天周六,学校放假,本来是要去托辅的,因为托辅已到期,侯舒怀没去,我今天工作挺忙,只好把他单独放到家里,让他写作业...
    指间的阳光923802阅读 128评论 0 1