<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>日期联动选择器</title>
<script type="text/javascript">
var $ = function (id) {
return "string" == typeof id ? document.getElementById(id) : id;
};
function addEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.addEventListener) {
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) {
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
};
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
var Extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
var DateSelector = Class.create();
DateSelector.prototype = {
initialize: function(oYear, oMonth, oDay,oHour,oMinute,oSecond, options) {
this.SelYear = $(oYear);//年选择对象
this.SelMonth = $(oMonth);//月选择对象
this.SelDay = $(oDay);//日选择对象
this.SelHour = $(oHour);
this.SelMinute = $(oMinute);
this.SelSecond = $(oSecond);
this.SetOptions(options);
var dt = new Date(), iMonth = parseInt(this.options.Month), iDay = parseInt(this.options.Day),iMinYear = parseInt(this.options.MinYear), iMaxYear = parseInt(this.options.MaxYear);
this.Year = parseInt(this.options.Year) || dt.getFullYear();
this.Month = 1 <= iMonth && iMonth <= 12 ? iMonth : dt.getMonth() + 1;
this.Day = iDay > 0 ? iDay : dt.getDate();
this.Hour = dt.getHours();
this.Minute = dt.getMinutes();
this.Second = dt.getSeconds();
this.MinYear = iMinYear && iMinYear < this.Year ? iMinYear : this.Year;
this.MaxYear = iMaxYear && iMaxYear > this.Year ? iMaxYear : this.Year;
this.onChange = this.options.onChange;
//年设置
this.SetSelect(this.SelYear, this.MinYear, this.MaxYear - this.MinYear + 1, this.Year - this.MinYear);
//月设置
this.SetSelect(this.SelMonth, 1, 12, this.Month - 1);
//日设置
this.SetDay();
this.SetSelect(this.SelHour, 1, 24, this.Hour - 1);
this.SetSelect(this.SelMinute, 1, 60, this.Minute - 1);
this.SetSelect(this.SelSecond, 0, 60, this.Second - 1);
var oThis = this;
//日期改变事件
addEventHandler(this.SelYear, "change", function(){
oThis.Year = oThis.SelYear.value; oThis.SetDay(); oThis.onChange();
});
addEventHandler(this.SelMonth, "change", function(){
oThis.Month = oThis.SelMonth.value; oThis.SetDay(); oThis.onChange();
});
addEventHandler(this.SelDay, "change", function(){ oThis.Day = oThis.SelDay.value; oThis.onChange(); });
},
//设置默认属性
SetOptions: function(options) {
this.options = {//默认值
Year: 0,//年
Month: 0,//月
Day: 0,//日
MinYear: 0,//最小年份
MaxYear: 0,//最大年份
onChange: function(){}//日期改变时执行
};
Extend(this.options, options || {});
},
//日设置
SetDay: function() {
//取得月份天数
var daysInMonth = new Date(this.Year, this.Month, 0).getDate();
if (this.Day > daysInMonth) { this.Day = daysInMonth; };
this.SetSelect(this.SelDay, 1, daysInMonth, this.Day - 1);
},
//select设置
SetSelect: function(oSelect, iStart, iLength, iIndex) {
//添加option
oSelect.options.length = iLength;
for (var i = 0; i < iLength; i++) {
//oSelect.options[i].text = oSelect.options[i].value = iStart + i;
var tmp = iStart + i
oSelect.options[i].value = tmp ;
if(tmp < 10){oSelect.options[i].text = '0'+ tmp; }
else{oSelect.options[i].text = tmp; }
}
//设置选中项
oSelect.selectedIndex = iIndex;
},
GetDateN:function(){
var y = parseInt(this.SelYear.options[this.SelYear.selectedIndex].text);
var m = parseInt(this.SelMonth.options[this.SelMonth.selectedIndex].text);
var d = parseInt(this.SelDay.options[this.SelDay.selectedIndex].text);
var h = parseInt(this.SelHour.options[this.SelHour.selectedIndex].text);
var mm = parseInt(this.SelMinute.options[this.SelMinute.selectedIndex].text);
var ss = parseInt(this.SelSecond.options[this.SelSecond.selectedIndex].text);
alert(m);
var tempdate = new Date(y,m,d,h,mm,ss);
return tempdate;
}
};
</script>
</head>
<body>
From:<select id="f_idMonth"></select>
<select id="f_idDay"></select>
<select id="f_idYear"></select>
<select id="f_idHour"></select>
<select id="f_idMinute"></select>
<select id="f_idSecond"></select>
<br>
To:<select id="t_idMonth"></select>
<select id="t_idDay"></select>
<select id="t_idYear"></select>
<select id="t_idHour"></select>
<select id="t_idMinute"></select>
<select id="t_idSecond"></select>
<br />
你选择的日期:<span id="idShow"></span>
<script>
var ds = new DateSelector("f_idMonth", "f_idDay", "f_idYear","f_idHour", "f_idMinute", "f_idSecond", {
MaxYear: new Date().getFullYear(),
MinYear: new Date().getFullYear()-10,
onChange: function(){ $("idShow").innerHTML = this.Year + "/" + this.Month + "/" + this.Day; }
});
var da = new DateSelector("t_idMonth", "t_idDay", "t_idYear","t_idHour", "t_idMinute", "t_idSecond", {
MaxYear: new Date().getFullYear(),
MinYear: new Date().getFullYear()-10,
onChange: function(){ $("idShow").innerHTML = this.Year + "/" + this.Month + "/" + this.Day; }
});
ds.onChange();
function tst(){
alert('from : ' + ds.GetDateN() + 'to :' + da.GetDateN() );
}
</script>
<button onclick='tst()'>Tst</button>
</body>
</html>
分享到:
相关推荐
### JavaScript 日期联动选择器详解 #### 知识点一:日期联动选择器的基本概念与功能 日期联动选择器是一种常见的网页元素,主要用于提供用户友好的日期选择界面。通过JavaScript编程,实现年、月、日三者之间的...
在JavaScript编程中,日期联动通常指的是在用户选择一个日期时,其他与日期相关的元素(如时间、日历等)会自动更新或触发某些操作。这种功能常见于许多Web应用程序,如在线预订系统、日程安排工具等。在这个场景中...
**JQ 日期联动插件** 在Web开发中,日期选择器是一种常见的用户交互元素,用于方便用户输入或选择日期。而"JQ 日期联动插件"则是基于jQuery库开发的一种增强日期选择功能的工具,它允许开发者创建更加灵活、易用且...
在Android开发中,日期联动控件通常用于提供用户选择日期的方式,这种控件设计巧妙,可以使得用户在选择年、月、日时有良好的交互体验。`WheelView`是一种常用的实现此类功能的自定义控件,它允许用户通过滚动轮盘来...
本例"ajax实现日期联动"将深入讲解如何利用AJAX来实现两个日期选择器之间的联动效果,即当用户在一个日期选择器中选取日期时,另一个日期选择器会根据预设逻辑自动更新其可选日期范围。 一、AJAX的基本流程 1. **...
本文实例为大家分享了js实现日期联动选择的相关代码,适用于生日的选择,供大家参考,具体内容如下 实现目标:年月日三个select 输入框,以及一个hidden的input,通过js获取input的值,如果有值切是日期格式,年月日...
在JavaScript和Bootstrap框架中,创建一个生日日期联动选择器是一个常见的需求,特别是在用户注册或个人信息填写的场景下。本文将详细介绍如何使用这两种技术实现这一功能,并确保安全性。 首先,HTML结构是实现...
在IT领域,尤其是在Web开发中,"jQuery 日期联动"是一种常见的交互功能,它使得用户在选择一个日期后,另一个日期选择器会自动更新或受到限制。这种功能常见于需要设置日期范围,如开始日期和结束日期的场景,如预订...
在本文中,我们将深入探讨如何使用jQuery来实现日期联动效果,这是一种常见的前端交互功能,尤其在日历插件或表单验证中非常实用。日期联动通常指的是在一个日期选择器(如年、月、日)中选择一个日期后,根据所选...
支持开始时间和结束时间联动,从VUE和element UI框架中拆分出来的。可以作为一个插件,单独引入到你需要的单个页面中。。UI界面很美观。功能强大。
总的来说,jQuery提供的这些工具和插件极大地简化了对`<select>`元素的操作,使得在Web应用中实现日期联动和其他动态交互变得轻松。在实际开发中,结合CSS和Ajax,我们可以构建出更加智能和用户友好的界面。
从给定的文件信息中,我们可以了解到的知识点包括JavaScript日期联动选择器的实现方法、兼容性处理、以及一些特定的JavaScript编程技巧。 首先,文档中提到了JavaScript日期联动选择器的实现。这是一个用户界面组件...
年月日 日期联动 简单容易理解 判断年和月 决定 日 取得的天书
### 严格的三级联动日期下拉菜单 在网页开发过程中,日期选择器是非常常见的一个功能模块。特别是对于需要用户输入特定日期的应用场景来说,一个友好且准确的日期选择器能够极大地提升用户体验并减少输入错误的发生...
Vue组件化日期联动选择器的实现旨在提供一个自定义的日期选择组件,它能够按照“年-月-日”的模式进行联动选择,以满足特定场景下的需求。这个组件适用于那些标准组件库中未包含此类联动选择器的情况。以下将详细...
在excel电子表格内,通过微调控件,调整年月后,考勤表内日期自动变动,利用条件格式,自动标注周六日,以示区别。表可以根据自己情况加以调整,
【原生JS实现日期联动】是一种常见的前端交互功能,它允许用户在选择日期时,不同日期选择器(如年、月、日)之间自动更新,确保所选日期的有效性和关联性。这种功能常见于各种表单和日历应用中,提高了用户体验。 ...