`
anysky131
  • 浏览: 175107 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

日历控件的代码及使用方法

 
阅读更多

calendar.js

//now date

function getNowDate()
{
var nn=new Date();
year1=nn.getYear();
mon1=nn.getMonth()+1;
date1=nn.getDate();
var monstr1;
var datestr1
if(mon1<10)
monstr1="0"+mon1;
else
monstr1=""+mon1;

if(date1<10)
datestr1="0"+date1;
else
datestr1=""+date1;
return year1+"-"+monstr1+"-"+datestr1;
}
//last date

function getlastweekDate()
{
var nn=new Date();
year1=nn.getYear();
mon1=nn.getMonth()+1;
date1=nn.getDate();

var mm=new Date(year1,mon1-1,date1);
var tmp1=new Date(2000,1,1);
var tmp2=new Date(2000,1,15);
var ne=tmp2-tmp1;
var mm2=new Date();
mm2.setTime(mm.getTime()-ne);


year2=mm2.getYear();
mon2=mm2.getMonth()+1;
date2=mm2.getDate();


if(mon2<10)
monstr2="0"+mon2;
else
monstr2=""+mon2;

if(date2<10)
datestr2="0"+date2;
else
datestr2=""+date2;


return year2+"-"+monstr2+"-"+datestr2;
}



var gdCtrl = new Object();
var goSelectTag = new Array();
var gcGray = "#808080";
var gcToggle = "#FB8664";
var gcBG = "#e5e6ec";
var previousObject = null;

var gdCurDate = new Date();
var giYear = gdCurDate.getFullYear();
var giMonth = gdCurDate.getMonth()+1;
var giDay = gdCurDate.getDate();

function fSetDate(iYear, iMonth, iDay){
var VicPopCal = document.getElementById('VicPopCal');
VicPopCal.style.visibility = "hidden";
if ((iYear == 0) && (iMonth == 0) && (iDay == 0)){
gdCtrl.value = "";
}else{
iMonth = iMonth + 100 + "";
iMonth = iMonth.substring(1);
iDay = iDay + 100 + "";
iDay = iDay.substring(1);
if(gdCtrl.tagName == "INPUT"){
gdCtrl.value = iYear+"-"+iMonth+"-"+iDay;
}else{
gdCtrl.innerText = iYear+"-"+iMonth+"-"+iDay;
}
}

for (i in goSelectTag)
goSelectTag[i].style.visibility = "visible";
goSelectTag.length = 0;

window.returnValue=gdCtrl.value;
//window.close();


}

function HiddenDiv()
{
var VicPopCal = document.getElementById('VicPopCal');
var i;
VicPopCal.style.visibility = "hidden";
for (i in goSelectTag)
goSelectTag[i].style.visibility = "visible";
goSelectTag.length = 0;

}
function fSetSelected(aCell){
var tbSelMonth1 = document.getElementById('tbSelMonth');
var tbSelYear1 = document.getElementById('tbSelYear');
var iOffset = 0;
var iYear = parseInt(tbSelYear1.value);
var iMonth = parseInt(tbSelMonth1.value);

aCell.bgColor = gcBG;

// with (aCell.children["cellText"]){

with (aCell.childNodes[0]){
var iDay = parseInt(innerHTML);
if (color==gcGray)
iOffset = (Victor<10)?-1:1;
iMonth += iOffset;
if (iMonth<1) {
iYear--;
iMonth = 12;
}else if (iMonth>12){
iYear++;
iMonth = 1;
}
}
fSetDate(iYear, iMonth, iDay);
}

function Point(iX, iY){
this.x = iX;
this.y = iY;
}

function fBuildCal(iYear, iMonth) {
var aMonth=new Array();
for(i=1;i<7;i++)
aMonth[i]=new Array(i);

var dCalDate=new Date(iYear, iMonth-1, 1);
var iDayOfFirst=dCalDate.getDay();
var iDaysInMonth=new Date(iYear, iMonth, 0).getDate();
var iOffsetLast=new Date(iYear, iMonth-1, 0).getDate()-iDayOfFirst+1;
var iDate = 1;
var iNext = 1;

for (d = 0; d < 7; d++)
aMonth[1][d] = (d<iDayOfFirst)?-(iOffsetLast+d):iDate++;
for (w = 2; w < 7; w++)
for (d = 0; d < 7; d++)
aMonth[w][d] = (iDate<=iDaysInMonth)?iDate++:-(iNext++);
return aMonth;
}

function fDrawCal(iYear, iMonth, iCellHeight, sDateTextSize) {
//var WeekDay = new Array("S","M","T","W","T","W","S");

var WeekDay = new Array("日","一","二","三","四","五","六");
var styleTD = " bgcolor='"+gcBG+"' bordercolor='"+gcBG+"' valign='middle' align='center' height='"+iCellHeight+"' style='font:bold arial "+sDateTextSize+";"; //Coded by Hcy email:hcy110@263.net


with (document) {
write("<tr>");
for(i=0; i<7; i++){
write("<td "+styleTD+"color:maroon' >"+ WeekDay[i] + "</td>");
}
write("</tr>");

for (w = 1; w < 7; w++) {
write("<tr>");
for (d = 0; d < 7; d++) {
write("<td id='calCell' "+styleTD+"cursor:pointer;' onMouseOver='this.bgColor=gcToggle' onMouseOut='this.bgColor=gcBG' onclick='fSetSelected(this)'>");
write("<font id='cellText' name='cellText' Victor='Hcy_Flag'> </font>");
write("</td>")
}
write("</tr>");
}
}
}

function fUpdateCal() {

iYear = document.getElementById('tbSelYear').value;
iMonth = document.getElementById('tbSelMonth').value;
myMonth = fBuildCal(iYear, iMonth);

var cellText = document.getElementsByName('cellText');
var i = 0;
for (w = 0; w < 6; w++)
for (d = 0; d < 7; d++)
with (cellText[(7*w)+d]) {
Victor = i++;
if (myMonth[w+1][d]<0) {
color = gcGray;
innerHTML = -myMonth[w+1][d];
}else{
color = ((d==0)||(d==6))?"red":"black";
innerHTML = myMonth[w+1][d];
}
}

}

function fSetYearMon(iYear, iMon){
var tbSelMonth = document.getElementById('tbSelMonth');
tbSelMonth.options[iMon-1].selected = true;

var tbSelYear = document.getElementById('tbSelYear');
for (i = 0; i < tbSelYear.length; i++)
if (tbSelYear.options[i].value == iYear)
tbSelYear.options[i].selected = true;

fUpdateCal(iYear, iMon);

}

function fPrevMonth(){
var tbSelYear = document.getElementById('tbSelYear');
var tbSelMonth = document.getElementById('tbSelMonth');
var iMon = tbSelMonth.value;
var iYear = tbSelYear.value;

if (--iMon<1) {
iMon = 12;
iYear--;
}

fSetYearMon(iYear, iMon);
}

function fNextMonth(){
var tbSelMonth = document.getElementById('tbSelMonth');
var tbSelYear = document.getElementById('tbSelYear');
var iMon = tbSelMonth.value;
var iYear = tbSelYear.value;

if (++iMon>12) {
iMon = 1;
iYear++;
}

fSetYearMon(iYear, iMon);
}

function fToggleTags(){
var select = document.getElementsByTagName("SELECT");

var isIE4 = ((navigator.userAgent.indexOf('Win') != -1) && (navigator.userAgent.indexOf('MSIE') != -1) && (parseInt(navigator.appVersion) >= 4 ));
if (isIE4)
{
for (i=0; i<select.length; i++)
if ((select[i].Victor != 'Won') && fTagInBound(select[i])){
select[i].style.visibility = "hidden";
goSelectTag[goSelectTag.length] = select[i];
}

with (document.all.tags("SELECT")){
for (i=0; i<length; i++)
if ((item(i).Victor!="Won")&&fTagInBound(item(i))){
item(i).style.visibility = "hidden";
goSelectTag[goSelectTag.length] = item(i);
}
}
}

}

function fTagInBound(aTag){
var VicPopCal = document.getElementById('VicPopCal');
with (VicPopCal.style){
var l = parseInt(left);
var t = parseInt(top);
var r = l+parseInt(width);
var b = t+parseInt(height);
var ptLT = fGetXY(aTag);
return !((ptLT.x>r)||(ptLT.x+aTag.offsetWidth<l)||(ptLT.y>b)||(ptLT.y+aTag.offsetHeight<t));
}
}

function fGetXY(aTag){
var oTmp = aTag;
var pt = new Point(0,0);
do {
pt.x += oTmp.offsetLeft;
pt.y += oTmp.offsetTop;
oTmp = oTmp.offsetParent;
} while(oTmp.tagName!="BODY");

return pt;
}

// Main: popCtrl is the widget beyond which you want this calendar to appear;

// dateCtrl is the widget into which you want to put the selected date.

// i.e.: <input type="text" name="dc" style="text-align:center" readonly><INPUT type="button" value="V" onclick="fPopCalendar(dc,dc);return false">

function fPopCalendar(popCtrl, dateCtrl,strDate){
var VicPopCal = document.getElementById('VicPopCal');
if (popCtrl == previousObject){
if (VicPopCal.style.visibility == "visible"){
HiddenDiv();
return true;
}

}

previousObject = popCtrl;
gdCtrl = dateCtrl;
fInitialDate(strDate);

fSetYearMon(giYear, giMonth);

var point = fGetXY(popCtrl);
with (VicPopCal.style) {
left = point.x;
top = point.y+popCtrl.offsetHeight;
width = VicPopCal.offsetWidth;
width <span

分享到:
评论

相关推荐

    JSP日历控件代码

    **JSP日历控件代码详解** 在网页开发中,日期选择控件是常见的功能之一,JSP(JavaServer Pages)作为服务器端脚本语言,提供了丰富的功能来创建动态网页。本篇将深入探讨如何在JSP中实现日历控件,并基于提供的...

    js日历控件代码及用法

    本教程将深入探讨JavaScript日历控件的实现原理、代码结构以及如何在实际项目中应用。 首先,我们要明白JavaScript日历控件的基本工作原理。它是通过JavaScript动态生成HTML元素,比如`&lt;table&gt;`,来模拟一个可交互...

    日历控件完整代码

    为了确保日历控件在不同浏览器和设备上正常工作,开发者需要考虑跨浏览器兼容性,如使用jQuery或其他库来简化兼容性问题。此外,对于移动设备,可能需要调整触摸事件的处理和布局以适应小屏幕。 总结,日历控件是...

    MFC日历控件的使用方法

    这样,我们就可以在代码中通过m_monthCal引用日历控件。同时,确保在消息映射(Message Map)中添加控件的消息处理函数,比如ON_WM_NOTIFY(),用于处理通知消息。 在消息处理函数中,我们需要覆盖ON_WM_NOTIFY()来...

    VBA EXCEL制作日历控件

    在EXCEL中,可以通过双击单元格,调出日历控件,通过对日历控件的操作,将所选日期更新到单元格中,该控件代码完全开放免费,供大家学习和使用,感兴趣的同学可以多多关注www.allmlp.com,让我们共同成长共同学习。

    日历控件 附加源代码

    "日历控件 附加源代码"的主题提供了使用日历控件的一个实例,这将帮助开发者更好地理解和实现此类功能。 首先,日历控件是一种图形用户界面组件,它允许用户通过可视化的日历样式来选择日期。这种控件通常具有友好...

    VC++ 个性化日历控件代码

    ### VC++ 个性化日历控件代码 在VC++中,日历控件是一个非常实用且功能丰富的组件,它能够帮助用户快速选择日期,并通过不同的显示样式满足多种界面设计需求。本文将详细介绍如何在VC++应用程序中使用并个性化日历...

    日历控件12

    在“日历控件140821”这个文件中,很可能包含了这些方面的示例代码、样式文件和配置文档,用于帮助开发者理解和实现上述功能。通过深入学习和实践,开发者可以掌握创建高效、用户友好的日历界面的技能,提升应用的...

    日历控件源代码和使用方法。简单易用。

    本文将深入探讨一款日历控件的源代码及其使用方法,适用于JavaScript编程环境,具有良好的兼容性和易用性。 首先,我们要理解日历控件在网页中的作用。通常,这种控件用于在线预订系统、日程安排或者任何需要用户...

    winform自定义日历控件

    本案例中,我们讨论的是如何创建一个"winform自定义日历控件",模仿百度的日历展示样式。这个自定义控件通常会包含日期选择、事件标记、颜色定制等功能,以提供更加友好和个性化的用户体验。 在C#中,我们可以继承`...

    html js脚本日历控件

    HTML 和 JavaScript 脚本日历控件是网页开发中常用的一种交互元素,它允许用户在网页上方便地选择日期,通常与表单控件配合使用,提高用户体验。这种控件在网页应用、在线预订系统、事件管理或任何需要用户输入日期...

    excel日历控件代码

    在Excel中,为了提高用户对日期输入的便捷性,我们可以使用日历控件来创建一个直观的日期选择界面。这个控件允许用户通过点击日历图标来选择日期,而不是手动输入,大大提升了数据输入的准确性和效率。以下是实现这...

    几种日历控件代码,附图

    ### 几种日历控件代码详解 #### 概述 本文将详细介绍一种网页日历控件的实现方式,该控件可通过简单的HTML输入框与JavaScript脚本相结合,实现日期的选择功能。文中提供了三种不同的实现示例,并附带了相关的图片以...

    jquery的日历控件控件代码

    然后,我们可以使用以下代码来初始化日历控件: ```javascript $(function() { $("#datePicker").datepicker({ dateFormat: "yy-mm-dd", // 设置日期格式 showOn: "both", // 既显示按钮也响应输入框点击 ...

    JS日历控件及其详细使用方法

    1.介绍:这是WalkingPoison根据梅花雨的日历控件修改发展出来的一个日历 Javascript 页面脚本控件,适用于微软的 IE (5.0以上)浏览器,从2.59版本开始支持Firefox浏览器。 2.用法 (1)把文件添加到解决方案文件夹...

    js+input日历控件代码及用法

    本资源"js+input时间日历控件代码及用法"提供了实现这一功能的具体代码示例,使得开发者能够轻松地在网页中集成日期选择功能。下面我们将详细探讨这个控件的实现原理、常见用法以及相关的JavaScript知识。 1. **...

    提供excel 日历控件9.0下载(工具必须的插件)

    5. **宏支持**:在Excel中,日历控件可能支持VBA宏编程,允许开发人员编写自定义代码以扩展其功能。 描述中提到,如果用户的Office已经包含了日历控件,则不需要额外安装。这暗示了并非所有Office用户都需要这个...

    js日历控件js日历控件

    本篇文章将详细探讨JavaScript日历控件的设计原理、实现方式以及常见的使用技巧。 首先,我们需要了解JavaScript的基本概念。JavaScript是一种轻量级的解释型编程语言,主要运行在浏览器环境中,用于增加网页的交互...

    JS日历控件特效代码layDate.zip

    JS日历控件特效代码layDate,非常不错的日历控件,调用也非常简单有两种方式,首先要导入laydate.js 一种是直接使用nclick="laydate()"函数,另一种是通过ID来调用,还是很不错的日历日期控件。

    XP样式日历控件VB源代码

    在使用"XP样式日历控件VB源代码"时,开发者首先需要将提供的XPCalendar文件导入到VB项目中。这可能包括DLL文件、OCX文件或者包含源代码的VB工程文件。导入后,可以在VB工程中添加控件,设置其属性,并编写对应的事件...

Global site tag (gtag.js) - Google Analytics