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语言的思想前提想学习js的朋友可以看看
Apr 01 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
jQuery制作简洁的多级联动Select下拉框
Dec 23 Javascript
javascript实现随机读取数组的方法
Aug 03 Javascript
纯javascript代码实现计算器功能(三种方法)
Sep 07 Javascript
jQuery自定义数值抽奖活动代码
Jun 11 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
Oct 28 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
May 21 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
小程序和web画三角形实现解析
Sep 02 Javascript
jquery实现拖拽添加元素功能
Dec 01 jQuery
纯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
德生S2000电路分析
2021/03/02 无线电
drupal 代码实现URL重写
2011/05/04 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
php递归json类实例
2014/12/02 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
Python内置类型性能分析过程实例
2020/01/29 Python
Python 实现一个简单的web服务器
2021/01/03 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
《开国大典》教学反思
2014/04/19 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
党员自我剖析材料
2014/08/31 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
校园安全教育心得体会
2016/01/15 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP