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 相关文章推荐
ie和firefox中img对象区别的困惑
Dec 27 Javascript
基于JQuery实现相同内容合并单元格的代码
Jan 12 Javascript
javascript 图片裁剪技巧解读
Nov 15 Javascript
jQuery 事件的命名空间简单了解
Nov 22 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
jqueryMobile使用示例分享
Jan 12 Javascript
confirm确认对话框的实现方法总结
Jun 17 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 Javascript
jquery easyui validatebox remote的使用详解
Nov 09 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
利用d3.js实现蜂巢图表带动画效果
Sep 03 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
php判断是否为json格式的方法
2014/03/04 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
2020/04/20 Python
python 绘制国旗的示例
2020/09/27 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
思想政治自我鉴定
2013/10/06 职场文书
电子商务专业自我鉴定
2013/12/18 职场文书
科研先进个人典型材料
2014/01/31 职场文书
公司经理聘任书
2014/03/29 职场文书
社会实践活动总结报告
2014/04/29 职场文书
法人授权委托书范本
2014/09/17 职场文书
小学优秀教师材料
2014/12/15 职场文书
交通事故责任认定书
2015/08/06 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android