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连接access数据库的方法
Nov 17 Javascript
javascript 无提示关闭窗口脚本
Aug 17 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
Sep 03 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
Aug 09 Javascript
js跑马灯代码(自写)
Apr 17 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
Jan 11 Javascript
jQuery使用Layer弹出层插件闪退问题
Dec 22 Javascript
详解vue-cli构建项目反向代理配置
Sep 07 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
微信小程序自定义多列选择器使用详解
Jun 21 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获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
php异常处理捕获错误整理
2019/09/23 PHP
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
讲解Python中运算符使用时的优先级
2015/05/14 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
python实现月食效果实例代码
2019/06/18 Python
python绘制多个子图的实例
2019/07/07 Python
简单了解python中的与或非运算
2019/09/18 Python
Python笔记之工厂模式
2019/11/20 Python
keras.layer.input()用法说明
2020/06/16 Python
python中setuptools的作用是什么
2020/06/19 Python
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
生产部岗位职责范文
2014/02/07 职场文书
收款委托书范本
2014/09/11 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫