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 相关文章推荐
JS Array对象入门分析
Oct 30 Javascript
jquery实现html页面 div 假分页有原理有代码
Sep 06 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
Mar 18 Javascript
APP中javascript+css3实现下拉刷新效果
Jan 27 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
vue实现登陆登出的实现示例
Sep 15 Javascript
基于JavaScript实现简单的音频播放功能
Jan 07 Javascript
javascript回调函数详解
Feb 06 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
Feb 28 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
js实现淘宝首页的banner栏效果
Nov 26 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开发框架总结收藏
2008/04/24 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
对于Form表单reset方法的新认识
2014/03/05 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python递归查询菜单并转换成json实例
2017/03/27 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
Python pickle模块实现对象序列化
2019/11/22 Python
Python通过socketserver处理多个链接
2020/03/18 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
Python中如何定义一个函数
2016/09/06 面试题
银行职业规划书范文
2013/12/28 职场文书
员工考核管理制度
2014/02/02 职场文书
学习演讲稿范文
2014/05/10 职场文书
镇创先争优活动总结
2014/08/28 职场文书
工作态度不好检讨书
2015/05/06 职场文书
活动费用申请报告
2015/05/15 职场文书
单身证明格式样本
2015/06/15 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js