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


Posted in Javascript onDecember 03, 2020

由于工作中涉及到生日编辑资料编辑,年月日用上面网址案例: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>

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

Javascript 相关文章推荐
js中几种去掉字串左右空格的方法
Dec 25 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
Jul 22 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
JQuery实现样式设置、追加、移除与切换的方法
Jun 11 Javascript
js实现遍历含有input的table实例
Dec 07 Javascript
jquery实现图片预加载
Dec 25 Javascript
Node.js的Express框架使用上手指南
Mar 12 Javascript
vue.js项目打包上线的图文教程
Nov 16 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
Jul 10 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
Sep 18 Javascript
解决layui数据表格Date日期格式的回显Object的问题
Sep 19 Javascript
JavaScript编写开发动态时钟
Jul 29 Javascript
jQuery加密密码到cookie的实现代码
Apr 18 #jQuery
微信小程序实战之自定义模态弹窗(8)
Apr 18 #Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
Apr 18 #Javascript
JavaScript错误处理和堆栈追踪详解
Apr 18 #Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
Apr 18 #Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 #Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 #Javascript
You might like
FleaPHP的安全设置方法
2008/09/15 PHP
php 禁止页面缓存输出
2009/01/07 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
vue router demo详解
2017/10/13 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
JS中数据结构之栈
2019/01/01 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Python列表切片常用操作实例解析
2019/12/16 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
团员学习总结的自我评价范文
2013/10/14 职场文书
班组长安全职责
2014/01/05 职场文书
鲜花方阵解说词
2014/02/13 职场文书
优秀食品类广告词
2014/03/19 职场文书
太太口服液广告词
2014/03/20 职场文书
护理学专业求职信
2014/06/29 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书