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 相关文章推荐
探讨javascript是不是面向对象的语言
Nov 21 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
Nov 30 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
Jun 06 Javascript
原生JS实现旋转木马式图片轮播插件
Apr 25 Javascript
EasyUI Pagination 分页的两种做法小结
Jul 09 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 Javascript
详解如何在Angular中快速定位DOM元素
May 17 Javascript
vue实现全选和反选功能
Aug 31 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
Jan 24 Javascript
微信小程序实现发微博功能的示例代码
Jun 24 Javascript
jquery实现拖拽添加元素功能
Dec 01 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 XML数据解析代码
2010/05/26 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
PyQt5每天必学之布局管理
2018/04/19 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
暑期社会实践感言
2014/02/25 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
如何利用pygame实现打飞机小游戏
2021/05/30 Python
Redis可视化客户端小结
2021/06/10 Redis
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫