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中令你抓狂的魔术变量
Nov 30 Javascript
ExtJS判断IE浏览器类型的方法
Feb 10 Javascript
Bootstrap表单布局样式源代码
Jul 04 Javascript
jQuery自制提示框tooltip改进版
Aug 01 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
Sep 09 Javascript
jQuery插件Echarts实现的渐变色柱状图
Mar 23 jQuery
利用JavaScript如何查询某个值是否数组内
Jul 30 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
JavaScript hasOwnProperty() 函数实例详解
Aug 04 Javascript
vue.js中npm安装教程图解
Apr 10 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
Jun 19 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 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上传文件中文文件名乱码的解决方法
2013/11/01 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Python聊天室程序(基础版)
2018/04/01 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
python正则表达式实例代码
2020/03/03 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
企业面试题试卷附带答案
2015/12/20 面试题
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
医学专业毕业生个人的求职信
2013/12/04 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
支教自我鉴定
2014/01/18 职场文书
法学专业自我鉴定
2014/02/05 职场文书
中学生操行评语大全
2014/04/24 职场文书
最新离婚协议书范本
2014/08/19 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
美术教师个人工作总结
2015/02/06 职场文书
思想品德课教学反思
2016/02/24 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python