javascript实现日期三级联动下拉框选择菜单

转载  2017-04-18   作者:雨中的鱼   我要评论

这篇文章主要介绍了javascript实现日期三级联动下拉框选择菜单,实现JS年月日三级联动下拉框选择功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

由于工作中涉及到生日编辑资料编辑,年月日用上面网址案例:bug提示:

编辑生日栏的【年】或者【月】,之前保存的具体的【日】就不显示啦,产品说不管编辑哪个数据,其他数据不变;

然后自己改了一下代码:

<html>

<head>
  <meta charset="UTF-8"/>
  <meta name="viewport"
     content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
  <title>JS年月日三级联动下拉框日期选择代码</title>
</head>

<body>

<form name="reg_testdate">
  <select name="YYYY" onChange="YYYYDD(this.value)">
    <option value="">请选择 年</option>
  </select>
  <select name="MM" onChange="MMDD(this.value)">
    <option value="">选择 月</option>
  </select>
  <select name="DD" onChange="DDD(this.value)">
    <option value="">选择 日</option>
  </select>
</form>

<script language="JavaScript">
  var changeDD = 1;//->一个全局变量
  function YYYYMMDDstart() {
    MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    //先给年下拉框赋内容
    var y = new Date().getFullYear();
    for (var i = (y - 47); i < (y + 21); i++) //以今年为准,前30年,后30年
      document.reg_testdate.YYYY.options.add(new Option(" " + i + " 年", i));
    //赋月份的下拉框
    for (var i = 1; i < 13; i++)
      document.reg_testdate.MM.options.add(new Option(" " + i + " 月", i));
    document.reg_testdate.YYYY.value = y;
    document.reg_testdate.MM.value = new Date().getMonth() + 1;
    var n = MonHead[new Date().getMonth()];
    if (new Date().getMonth() == 1 && IsPinYear(YYYYvalue)) n++;
    writeDay(n); //赋日期下拉框
    //->赋值给日,为当天日期
//    document.reg_testdate.DD.value = new Date().getDate();
  }
  if (document.attachEvent)
    window.attachEvent("onload", YYYYMMDDstart);
  else
    window.addEventListener('load', YYYYMMDDstart, false);

  function YYYYDD(str) //年发生变化时日期发生变化(主要是判断闰平年)
  {
    var MMvalue = document.reg_testdate.MM.options[document.reg_testdate.MM.selectedIndex].value;
    if (MMvalue == "") {
//      var e = document.reg_testdate.DD;
      optionsClear(e);
      return;
    }
    var n = MonHead[MMvalue - 1];
    if (MMvalue == 2 && IsPinYear(str)) n++;
    writeDay(n)
  }

  function MMDD(str) //月发生变化时日期联动
  {
    var YYYYvalue = document.reg_testdate.YYYY.options[document.reg_testdate.YYYY.selectedIndex].value;
    if (YYYYvalue == "") {
      var e = document.reg_testdate.DD;
      optionsClear(e);
      return;
    }
    var n = MonHead[str - 1];
    if (str == 2 && IsPinYear(YYYYvalue)) n++;
    writeDay(n)
  }

  function writeDay(n) //据条件写日期的下拉框
  {
    var e = document.reg_testdate.DD;
    optionsClear(e);
    for (var i = 1; i < (n + 1); i++)
    {
      e.options.add(new Option(" " + i + " 日", i));
      if(i == changeDD){
        e.options[i].selected = true; //->保持选中状态
      }
    }
    console.log(i);
    console.log(changeDD);
  }

  function IsPinYear(year) //判断是否闰平年
  {
    return (0 == year % 4 && (year % 100 != 0 || year % 400 == 0));
  }

  function optionsClear(e) {
    e.options.length = 1;
  }
  //->随时监听日的改变
  function DDD(str){
    changeDD = str;
  }
</script>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JS使用onerror捕获异常示例

    JS使用onerror捕获异常示例

    这篇文章主要介绍了JS使用onerror捕获异常的方法,结合实例形式分析了javascript基于onerror事件处理器捕获异常的具体流程与相关操作技巧,需要的朋友可以参考下
    2016-08-08
  • javascript实现页面滚屏效果

    javascript实现页面滚屏效果

    本文主要介绍了javascript实现页面滚屏效果的方法,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • JavaScript代码生成PDF文件的方法

    JavaScript代码生成PDF文件的方法

    如何使用js生成pdf文件呢,下面通过本文给大家分享JavaScript代码生成PDF文件的方法,需要的朋友参考下吧
    2016-02-02
  • 深入理解Javascript闭包 新手版

    深入理解Javascript闭包 新手版

    最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者来说别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Javascript闭包的真实面目。
    2010-12-12
  • js单独获取一个checkbox看其是否被选中

    js单独获取一个checkbox看其是否被选中

    这篇文章主要与大家分享js获取一个checkbox看其是否被选中的具体实现,很简单,但很实用,需要的朋友可以参考下
    2014-09-09
  • js实现纯前端的图片预览

    js实现纯前端的图片预览

    这篇文章主要介绍了js实现纯前端的图片预览的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • 基于JavaScript实现购物网站商品放大镜效果

    基于JavaScript实现购物网站商品放大镜效果

    大家在日常生活中都有网购的经验,有的网站会有商品放大镜功能,效果非常棒,那么基于js代码是如何实现的呢?下面小编给大家带来了基于js实现购物网站商品放大镜效果,非常不错,感兴趣的朋友参考下吧
    2016-09-09
  • 使用 JavaScript 进行函数式编程 (一) 翻译

    使用 JavaScript 进行函数式编程 (一) 翻译

    本文是函数式编程系列的第一篇文章。这里我会简要介绍一下编程范式,然后会直接介绍使用 Javascript 进行函数式编程的概念,因为 JavsScript 是最被认可的函数式程序语言之一。我们鼓励读者通过参考资料部分进一步了解这一迷人的概念
    2015-10-10
  • JavaScript中Object值合并方法详解

    JavaScript中Object值合并方法详解

    这篇文章主要为大家详细介绍了JavaScript中Object值合并方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • JavaScript下的时间格式处理函数Date.prototype.format

    JavaScript下的时间格式处理函数Date.prototype.format

    这篇文章主要介绍了JavaScript下的时间格式处理函数Date.prototype.format的相关资料,需要的朋友可以参考下
    2016-01-01

最新评论