<!doctype html>
<html>
<head>
<title>年月日</title>
</head>
<body onLoad="init()">
<select id="year" onChange="swap_day()"></select>年
<select id="month" onChange="swap_day()"></select>月
<select id="day"></select>日
</body>
<script>
var month_big = new Array("1","3","5","7","8","10","12"); //包含所有大月的数组
var month_small = new Array("4","6","9","11"); //包含所有小月的数组 //页面加载时调用的初始化select控件的option的函数
function init()
{
var select_year = document.getElementById("year"); //获取id为"year"的下拉列表框
var select_month = document.getElementById("month"); //获取id为"month"的下拉列表框
var select_day = document.getElementById("day"); //获取id为"day"的下拉列表框 //将年份选项初始化,从1980到2000
for(var i = 1980; i <= 2000; i++)
{
select_year_option = new Option(i, i);
select_year.options.add(select_year_option);
} //将月份选项初始化,从1到12
for(var i = 1; i <= 12; i++)
{
select_month_option = new Option(i, i);
select_month.options.add(select_month_option);
} //调用swap_day函数初始化日期
swap_day();
}
//判断数组array中是否包含元素obj的函数,包含则返回true,不包含则返回false
function array_contain(array, obj)
{
for (var i = 0; i < array.length; i++)
{
if (array[i] === obj)
{
return true;
}
}
return false;
} //根据年份和月份调整日期的函数
function swap_day()
{
var select_year = document.getElementById("year"); //获取id为"year"的下拉列表框
var select_month = document.getElementById("month"); //获取id为"month"的下拉列表框
var select_day = document.getElementById("day"); //获取id为"day"的下拉列表框 select_day.options.length = 0; //在调整前先清空日期选项里面的原有选项
var month = select_month.options[select_month.selectedIndex].value; //获取被选中的月份month //如果month被包含在month_big数组中,即被选中月份是大月,则将日期选项初始化为31天
if(array_contain(month_big, month))
{
for(var i = 1; i <= 31; i++)
{
select_day_option = new Option(i, i);
select_day.options.add(select_day_option);
}
} //如果month被包含在month_small数组中,即被选中月份是小月,则将日期选项初始化为30天
else if(array_contain(month_small, month))
{
for(var i = 1; i <= 30; i++)
{
select_day_option = new Option(i, i);
select_day.options.add(select_day_option);
}
} //如果month为2,即被选中的月份是2月,则调用initFeb()函数来初始化日期选项
else
{
initFeb();
}
}
//判断年份year是否为闰年,是闰年则返回true,否则返回false
function isLeapYear(year)
{
var a = year % 4;
var b = year % 100;
var c = year % 400;
if( ( (a == 0) && (b != 0) ) || (c == 0) )
{
return true;
}
return false;
} //根据年份是否闰年来初始化二月的日期选项
function initFeb()
{
var select_year = document.getElementById("year"); //获取id为"year"的下拉列表框
var select_day = document.getElementById("day"); //获取id为"day"的下拉列表框
var year = parseInt(select_year.options[select_year.selectedIndex].value); //获取被选中的年份并转换成Int //如果是闰年,则将日期选项初始化为29天
if(isLeapYear(year))
{
for(var i = 1; i <= 29; i++)
{
select_day_option = new Option(i, i);
select_day.options.add(select_day_option);
}
} //如果不是闰年,则将日期选项初始化为28天
else
{
for(var i = 1; i <= 28; i++)
{
select_day_option = new Option(i, i);
select_day.options.add(select_day_option);
}
}
}
</script>
</html>

JavaScript日期控件,用select实现的更多相关文章

  1. 【javascript】分享一款经典的日期控件 My97DatePicker

    最近在做平台项目,其中有用到日期选择,相对于 jqueryui 的 datepicker 我更喜欢 My97DatePicker. 理由 体积小,相对于 jqueryui 的 datepicker 的 ...

  2. [转]通过AngularJS directive对bootstrap日期控件的的简单包装

    本文转自:http://www.cnblogs.com/Benoly/p/4109460.html 最近项目上了AngularJS,而原来使用的日期控件的使用方式也需要改变,于是开始了倒腾,看了官方的 ...

  3. [整理]通过AngularJS directive对bootstrap日期控件的的简单包装

    最近项目上了AngularJS,而原来使用的日期控件的使用方式也需要改变,于是开始了倒腾,看了官方的例子,可以使用AngularJS的directive做简单的处理,这样在html里直接使用申明的的形 ...

  4. jquery datepicker-强大的日期控件

    在web开发中,总会遇到需要用户输入日期的情况.一般都是提供一个text类型的input供用户输入日期.然而,这种方式,开发人员必须对用户输入的日期进行验证,判断其合法性.除此之外,让用户输入日期也是 ...

  5. js 日期控件 可以显示为和历

    日期控件的js <!-- /** * Calendar * @param beginYear 1990 * @param endYear 2010 * @param language 0(zh_ ...

  6. Webdriver控制翻页控件,并实现向前向后翻页功能,附上代码,仅供参考,其他类似日期控件的功能可以自己封装

    新增输入与选择页面的html源码: <div style="margin-top:-60px;" class="modal-content" id=&qu ...

  7. 【SoDiaoEditor电子病历编辑器】阶段性更新--新增复选框、日期控件、表格排版支持等

    转眼距离上一次v2正式发布已经过去一个半月了.github期间不定期push了二十几次,同时感谢分布在广州.福建.上海.北京的一众小伙伴,正是你们给出的建议,才让SoDiaoEditor不断完善. 我 ...

  8. JavaScript日历控件开发 C# 读取 appconfig文件配置数据库连接字符串,和配置文件 List<T>.ForEach 调用异步方法的意外 ef 增加或者更新的习惯思维 asp.net core导入excel 一个二级联动

    JavaScript日历控件开发   概述 在开篇之前,先附上日历的代码地址和演示地址,代码是本文要分析的代码,演示效果是本文要实现的效果代码地址:https://github.com/aspwebc ...

  9. 根据条件决定My97DatePicker日期控件弹出的日期格式

    代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...

随机推荐

  1. Server Tomcat v7.0 Server at localhost was unable to&nbs 报错问题解决

    在eclipse启动tomcat时遇到超时45秒的问题: Server Tomcat v7.0 Server at localhost was unable to start within 45 se ...

  2. javascript模板库jsrender加载并缓存外部模板文件

    前一篇说了jsrender嵌套循环的使用,在SPA的应用中,广泛使用的一个点就是view模板,使用了SPA之后,每个业务页面不再是独立的html,仅仅是一个segment,所以通常这些segment会 ...

  3. C#的库存管理之旅的别样意义

    我不知道大家对C#的一些基础知识掌握得怎么样了? 但无论怎么样,都应该静心下来去慢慢品味我的总结以及“库存管理”项目需用到的一些知识和技巧.你将会得到你料想不到的收获哦. 知识梳理: 数据类型:boo ...

  4. C++之虚函数的作用和使用方法

    在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是“重复定义”.但是在类的继承层次结构中,在不同的层次中可以出现名字相同.参数个数和类型都相同而功能不同的函数.例如在例12.1( ...

  5. 学习angular.js的一些笔记想法(上)

    1.data-ng-app与ng-app的区别 data-ng-app是为了h5不报错 2.ng-class 不多说就来拿例子说吧 html代码 <div class='color-change ...

  6. Java2_J2EE、J2SE和J2ME的区别

    解析J2EE.J2SE.J2ME.JDK的区别       本文向大家简单介绍一下JDK.J2EE.J2SE.J2ME概念及区别,J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务 ...

  7. JavaScript 开发者经常忽略或误用的七个基础知识点(转)

    JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...

  8. ae显示标注

    //添加标注,比TextElment功能更强大 public static void ToAddAnnotate(ILayer layer, string fieldName) { IGeoFeatu ...

  9. JEPF 3.1.2 发布,我们的软件机床(软件快速开发平台)

    JEPF新一代软件快速开发平台(Java Elephant Platform)是一款优秀的平台产品,它本着灵活.快捷开发.高性能.高协作性.高稳定性.高可用性.人性化的操作体验为设计宗旨历经2年研发成 ...

  10. JavaScript学习08 Cookie对象

    JavaScript学习08 Cookie对象 JavaScript Cookie Cookie对象: Cookie是一种以文件的形式保存在客户端硬盘的Cookies文件夹中的用户数据信息(Cooki ...