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 相关文章推荐
统一接口:为FireFox添加IE的方法和属性的js代码
Mar 25 Javascript
鼠标经过的文本框textbox变色
May 21 Javascript
javascript 拖放效果实现代码
Jan 22 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
Feb 25 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
微信小程序 for 循环详解
Oct 09 Javascript
jQuery插件fullPage.js实现全屏滚动效果
Dec 02 Javascript
详解JavaScript中this的指向问题
Jan 20 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
May 11 Javascript
JavaScript对JSON数组简单排序操作示例
Jan 31 Javascript
微信小程序图片自适应实现解析
Jan 21 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
May 23 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
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
javascript关于继承解析
2016/05/10 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
Python下的twisted框架入门指引
2015/04/15 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
对Python中的@classmethod用法详解
2018/04/21 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
shell的种类有哪些
2015/04/15 面试题
大学开学计划书
2014/04/30 职场文书
带病坚持工作事迹
2014/05/03 职场文书
学校端午节活动总结
2015/02/11 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
python控制台打印log输出重复的解决方法
2021/05/14 Python
深入浅析React中diff算法
2021/05/19 Javascript
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
Nginx如何配置根据路径转发详解
2022/07/23 Servers