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 相关文章推荐
Jquery 切换不同图片示例代码
Dec 05 Javascript
JavaScript编写推箱子游戏
Jul 07 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
Sep 12 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
EasyUI在表单提交之前进行验证的实例代码
Jun 24 Javascript
javascript 中iframe高度自适应(同域)实例详解
May 16 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
Dec 14 Javascript
微信小程序实现上传图片功能
May 28 Javascript
详解新手使用vue-router传参时注意事项
Jun 06 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
Aug 14 Javascript
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
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
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python中的is和id用法分析
2015/01/26 Python
python内存管理分析
2015/04/08 Python
Python冲顶大会 快来答题!
2018/01/17 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
python通过链接抓取网站详解
2019/11/20 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
优秀毕业生自荐信范文
2014/01/01 职场文书
土木工程求职信
2014/05/29 职场文书
班级读书活动总结
2014/06/30 职场文书
迎国庆横幅标语
2014/10/08 职场文书
导游词之广西漓江
2019/11/02 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
pytorch fine-tune 预训练的模型操作
2021/06/03 Python