怎样利用源生JS实现出生日期下拉菜单

这次给大家带来怎样利用源生JS实现出生日期下拉菜单,利用源生JS实现出生日期下拉菜单的注意事项有哪些,下面就是实战案例,一起来看一下。

在制作网页时,可能需要给用户提供注册帐号页面,用户注册 设计很多信息,其中就有 关于出生日期的,出于用户体验,不想让用户手动输入,而HTML5的date,目前很多浏览器支持的并不是很好,所以就可以用JS实现年、月、日3个下拉框的日期选择。具体代码如下:

1、新建一个js文件,如birthday.js;

function DateSelector(selYear, selMonth, selDay) {//定义函数  this.selYear = selYear;  this.selMonth = selMonth;  this.selDay = selDay;  this.selYear.Group = this;  this.selMonth.Group = this;// 给年份、月份下拉菜单添加处理onchange事件的函数  if (window.document.all != null) // IE  {    this.selYear.attachEvent("onchange", DateSelector.Onchange);    this.selMonth.attachEvent("onchange", DateSelector.Onchange);  }  else // Firefox  {    this.selYear.addEventListener("change", DateSelector.Onchange, false);    this.selMonth.addEventListener("change", DateSelector.Onchange, false);  }  if (arguments.length == 4) // 如果传入参数个数为4,最后一个参数必须为Date对象    this.InitSelector(arguments[3].getFullYear(), arguments[3].getMonth() + 1, arguments[3].getDate());  else if (arguments.length == 6) // 如果传入参数个数为6,最后三个参数必须为初始的年月日数值    this.InitSelector(arguments[3], arguments[4], arguments[5]);  else // 默认使用当前日期  {    var dt = new Date();    this.InitSelector(dt.getFullYear(), dt.getMonth() + 1, dt.getDate());  }}// 增加一个最小年份的属性--最老年份DateSelector.prototype.MinYear = 1960;// 增加一个最大年份的属性--最新年份,即当前时期getFullYear()DateSelector.prototype.MaxYear = (new Date()).getFullYear();// 初始化年份DateSelector.prototype.InitYearSelect = function () {// 循环添加OPION元素到年份select对象中  for (var i = this.MaxYear; i >= this.MinYear; i--) {// 新建一个OPTION对象    var op = window.document.createElement("OPTION");// 设置OPTION对象的值    op.value = i;// 设置OPTION对象的内容    op.innerHTML = i;// 添加到年份select对象    this.selYear.appendChild(op);  }}// 初始化月份DateSelector.prototype.InitMonthSelect = function () {// 循环添加OPION元素到月份select对象中  for (var i = 1; i < 13; i++) {// 新建一个OPTION对象    var op = window.document.createElement("OPTION");// 设置OPTION对象的值    op.value = i;// 设置OPTION对象的内容    op.innerHTML = i;// 添加到月份select对象    this.selMonth.appendChild(op);  }}// 根据年份与月份获取当月的天数DateSelector.DaysInMonth = function (year, month) {  var date = new Date(year, month, 0);  return date.getDate();}// 初始化天数DateSelector.prototype.InitDaySelect = function () {// 使用parseInt函数获取当前的年份和月份  var year = parseInt(this.selYear.value);  var month = parseInt(this.selMonth.value);// 获取当月的天数  var daysInMonth = DateSelector.DaysInMonth(year, month);// 清空原有的选项  this.selDay.options.length = 0;// 循环添加OPION元素到天数select对象中  for (var i = 1; i <= daysInMonth; i++) {// 新建一个OPTION对象    var op = window.document.createElement("OPTION");// 设置OPTION对象的值    op.value = i;// 设置OPTION对象的内容    op.innerHTML = i;// 添加到天数select对象    this.selDay.appendChild(op);  }}// 处理年份和月份onchange事件的方法,它获取事件来源对象(即selYear或selMonth)// 并调用它的Group对象(即DateSelector实例,请见构造函数)提供的InitDaySelect方法重新初始化天数// 参数e为event对象DateSelector.Onchange = function (e) {  var selector = window.document.all != null ? e.srcElement : e.target;  selector.Group.InitDaySelect();}// 根据参数初始化下拉菜单选项DateSelector.prototype.InitSelector = function (year, month, day) {// 由于外部是可以调用这个方法,因此我们在这里也要将selYear和selMonth的选项清空掉// 另外因为InitDaySelect方法已经有清空天数下拉菜单,因此这里就不用重复工作了  this.selYear.options.length = 0;  this.selMonth.options.length = 0;// 初始化年、月  this.InitYearSelect();  this.InitMonthSelect();// 设置年、月初始值  this.selYear.selectedIndex = this.MaxYear - year;  this.selMonth.selectedIndex = month - 1;// 初始化天数  this.InitDaySelect();// 设置天数初始值  this.selDay.selectedIndex = day - 1;}

登录后复制

2、在注册表单中的页面,引用刚才写的js

年月日<!--完成出生日期的选择--需写在前-->var selYear = window.document.getElementById("selYear");var selMonth = window.document.getElementById("selMonth");var selDay = window.document.getElementById("selDay");// 新建一个DateSelector类的实例,将三个select对象传进去new DateSelector(selYear, selMonth, selDay, 1995, 1, 17);

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

如何使用Express托管静态文件

使用JS实做出加密解密操作

以上就是怎样利用源生JS实现出生日期下拉菜单的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2750269.html

(0)
上一篇 2025年3月8日 05:33:58
下一篇 2025年2月24日 01:52:19

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS+正则取得小括号、中括号及花括号内容步骤详解

    这次给大家带来JS+正则取得小括号、中括号及花括号内容步骤详解,JS+正则取得小括号、中括号及花括号内容的注意事项有哪些,下面就是实战案例,一起来看一下。 JS 正则表达式 获取小括号 中括号 花括号内的内容 JS获取括号内容var str…

    2025年3月8日
    200
  • 在vue.js中如何选择baseurl的方法

    本篇文章主要介绍了vue.js根据代码运行环境选择baseurl的方法,现在分享给大家,也给大家做个参考。 配置通用的API前缀可以更好在本地通过接口代理转发获取数据、或者部署时在Nginx中做反向代理,但是项目中一旦涉及大量的需要文件上传…

    编程技术 2025年3月8日
    200
  • JS怎样做出动画效果流程进度条

    这次给大家带来JS怎样做出动画效果流程进度条,JS做出动画效果流程进度条的注意事项有哪些,下面就是实战案例,一起来看一下。 当在使用流程的时候,比如有一个审核流程,有三个阶段:开始,审核中,审核成功。当在不同的阶段,做相应的进度显示,当显示…

    2025年3月8日
    200
  • 后端程序员JS模块化使用说明

    这次给大家带来后端程序员JS模块化使用说明,后端程序员JS模块化使用的注意事项有哪些,下面就是实战案例,一起来看一下。 基础模式 匿名闭包 匿名闭包是很常用的代码隔离方式,声明匿名对象并立即执行。匿名函数中声明的变量和方法以及匿名函数本身不…

    编程技术 2025年3月8日
    200
  • 如何使用js获取当前时间

    这次给大家带来如何使用js获取当前时间,使用js获取当前时间的注意事项有哪些,下面就是实战案例,一起来看一下。 Date对象setDate() : 设置一个月的某一天。getFullYear() : 返回一个表示年的四位数字。getMont…

    编程技术 2025年3月8日
    200
  • 在vue.js中如何给动态绑定的radio列表做批量编辑

    下面我就为大家分享一篇vue.js给动态绑定的radio列表做批量编辑的方法,具有很好的参考价值,希望对大家有所帮助。 每个题目绑定的题目结构如下json对象,每次动态添加选项就是将其加入了vue实例的某个数组对象中: vm.options…

    2025年3月8日
    200
  • jscss基础操作总结

    这次给大家带来jscss基础操作总结,jscss基础操作的注意事项有哪些,下面就是实战案例,一起来看一下。 返回上一页: 返回上一页function goBack(){window.history.go(-1) -2即为退后2页} 登录后复…

    编程技术 2025年3月8日
    200
  • 怎样编写可自定义维护JS代码

    这次给大家带来怎样编写可自定义维护js代码,编写可自定义维护js代码的注意事项有哪些,下面就是实战案例,一起来看一下。 1.1 格式化 关于缩进层次: 我不想挑起“Tab or Space”和“2 or 4 or 6 or 8 Space”…

    编程技术 2025年3月8日
    200
  • 在JavaScript中如何复制内容到剪贴板

    最近一个活动页面中有一个小需求,用户点击或者长按就可以复制内容到剪贴板,记录一下实现过程和遇到的坑,需要的朋友可以参考下 常见方法 查了一下万能的Google,现在常见的方法主要是以下两种: 第三方库:clipboard.js原生方法:do…

    2025年3月8日
    200
  • 在angularjs数组中如何判断是否含有某个元素

    下面我就为大家分享一篇angularjs数组判断是否含有某个元素的实例,具有很好的参考价值,希望对大家有所帮助。 也就是in_array函数,判断数组中是否含有某个元素。   Array.prototype.in_array = funct…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论