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 相关文章推荐
禁止F5等快捷键的JS代码
Mar 06 Javascript
JavaScript 组件之旅(三):用 Ant 构建组件
Oct 28 Javascript
jquery限定文本框只能输入数字即整数和小数
Nov 29 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
Node.js 制作实时多人游戏框架
Jan 08 Javascript
TypeScript 学习笔记之基本类型
Jun 19 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
AngularJS轻松实现双击排序的功能
Aug 30 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
jquery中done和then的区别(详解)
Dec 19 jQuery
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
JavaScript 异步时序问题
Nov 20 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生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
浅析python递归函数和河内塔问题
2017/04/18 Python
Python使用pymysql小技巧
2017/06/04 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python 解压pkl文件的方法
2018/10/25 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
如何设置Java的运行环境
2013/04/05 面试题
教师自我鉴定
2013/12/13 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
委托书如何写
2014/08/30 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
Redis实战高并发之扣减库存项目
2022/04/14 Redis