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 相关文章推荐
JavaScript脚本性能的优化方法
Feb 02 Javascript
extjs 分页使用jsp传递数据示例
Jul 29 Javascript
10个很棒的jQuery代码片段
Sep 24 Javascript
js实现倒计时及时间对象
Nov 15 Javascript
原生JS实现不断变化的标签
May 22 Javascript
vue实现商城上货组件简易版
Nov 27 Javascript
webpack写jquery插件的环境配置
Dec 21 jQuery
详解如何用typescript开发koa2的二三事
Nov 13 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
Feb 28 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
jquery-ui 进度条功能示例【测试可用】
Jul 25 jQuery
如何理解Vue简单状态管理之store模式
May 15 Vue.js
纯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 文件上传功能实现代码
2009/06/24 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
javascript Window及document对象详细整理
2011/01/12 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
初学python数组的处理代码
2011/01/04 Python
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
物流管理应届生求职信
2013/11/07 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
2014年工会工作总结
2014/11/12 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
停车场管理制度范本
2015/08/05 职场文书
推普标语口号大全
2015/12/26 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书