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 相关文章推荐
基于MVC3方式实现下拉列表联动(JQuery)
Sep 02 Javascript
js禁止回车提交表单的示例代码
Dec 23 Javascript
js或jquery实现页面打印可局部打印
Mar 27 Javascript
js中的事件捕捉模型与冒泡模型实例分析
Jan 10 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
Sep 06 Javascript
去除html代码里面的script正则方法
May 19 Javascript
MVVM 双向绑定的实现代码
Jun 21 Javascript
解决vue props 拿不到值的问题
Sep 11 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
tracking.js实现前端人脸识别功能
Apr 16 Javascript
Vuex中的Mutations的具体使用方法
Jun 01 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
PHP单链表的实现代码
2016/07/05 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
广告显示判断
2006/08/31 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Python 串口通信的实现
2020/09/29 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
奶茶专卖店创业计划书
2014/01/18 职场文书
花店创业计划书范文
2014/02/07 职场文书
班级文化标语
2014/06/23 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers