JavaScript用select实现日期控件


Posted in Javascript onJuly 17, 2015

代码很简单,这里就不多废话了,直接给大家源码吧

<!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 相关文章推荐
jQuery源码分析-01总体架构分析
Nov 14 Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
Bootstrap每天必学之响应式导航、轮播图
Apr 25 Javascript
js图片上传前预览功能(兼容所有浏览器)
Aug 24 Javascript
深入理解JS实现快速排序和去重
Oct 17 Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 Javascript
JavaScript中为事件指定处理程序的五种方式分析
Jul 27 Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
微信小程序页面传多个参数跳转页面的实现方法
May 17 Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 Javascript
Js类的构建与继承案例详解
Sep 15 Javascript
纯javascript制作日历控件
Jul 17 #Javascript
javascript生成不重复的随机数
Jul 17 #Javascript
jQuery实现径向动画菜单效果
Jul 17 #Javascript
jquery合并表格中相同文本的相邻单元格
Jul 17 #Javascript
用svg制作富有动态的tooltip
Jul 17 #Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
Jul 17 #Javascript
JavaScript调用浏览器打印功能实例分析
Jul 17 #Javascript
You might like
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
PHP闭包实例解析
2014/09/08 PHP
php简单实现MVC
2015/02/05 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
详解json在php中的应用
2018/09/30 PHP
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
python实现控制台打印的方法
2019/01/12 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
毕业生幼师求职自荐信
2013/10/01 职场文书
人力资源经理自我评价
2014/01/04 职场文书
建议书标准格式
2014/03/12 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
小学生作文批改评语
2014/12/25 职场文书
科技活动总结范文
2015/05/11 职场文书
nginx服务器的下载安装与使用详解
2021/08/02 Servers