视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
怎样利用源生JS实现出生日期下拉菜单
2020-11-27 19:41:35 责编:小采
文档


这次给大家带来怎样利用源生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

<script type="text/javascript" src="/js/birthday.js"></script>
<select id="selYear"></select>年
<select id="selMonth"></select>月
<select id="selDay"></select>日
<!--完成出生日期的选择--需写在</body>前-->
<script type="text/javascript">
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);
</script>
</body>
</html>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

如何使用Express托管静态文件

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

下载本文
显示全文
专题