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 风格的HTML文本转义
Jul 01 Javascript
jquery 字符串切割函数substring的用法说明
Feb 11 Javascript
jquery实现邮箱自动补全功能示例分享
Feb 17 Javascript
js实现页面跳转重定向的几种方式
May 29 Javascript
推荐一款jQuery插件模板
Jan 09 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
JQuery中attr方法和removeAttr方法用法实例
May 18 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
Oct 20 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
Jun 07 Javascript
javascript 删除数组元素和清空数组的简单方法
Feb 24 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
Mar 15 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
Nov 22 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设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
js判断节假日实例代码
2017/12/27 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
python常见排序算法基础教程
2017/04/13 Python
Python之web模板应用
2017/12/26 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
深入浅析Python中的迭代器
2019/06/04 Python
Django中信号signals的简单使用方法
2019/07/04 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
教导处工作制度
2014/01/18 职场文书
设计师求职信模板
2014/05/06 职场文书
设计师求职信
2014/07/01 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书