1
<script language=javascript>
2
var DS_x,DS_y;
3
4
function dateSelector() //构造dateSelector对象,用来实现一个日历形式的日期输入框。
5
{
6
var myDate=new Date();
7
this.year=myDate.getFullYear(); //定义year属性,年份,默认值为当前系统年份。
8
this.month=myDate.getMonth()+1; //定义month属性,月份,默认值为当前系统月份。
9
this.date=myDate.getDate(); //定义date属性,日,默认值为当前系统的日。
10
this.inputName=''; //定义inputName属性,即输入框的name,默认值为空。注意:在同一页中出现多个日期输入框,不能有重复的name!
11
this.display=display; //定义display方法,用来显示日期输入框。
12
}
13
14
function display() //定义dateSelector的display方法,它将实现一个日历形式的日期选择框。
15
{
16
var week=new Array('日','一','二','三','四','五','六');
17
18
document.write("<style type=text/css>");
19
document.write(" .ds_font td,span { font: normal 12px 宋体; color: #000000; }");
20
document.write(" .ds_border { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");
21
document.write(" .ds_border2 { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }");
22
document.write("</style>");
23
24
document.write("<input style='text-align:center;' id='DS_"+this.inputName+"' name='"+this.inputName+"' value='"+this.year+"-"+this.month+"-"+this.date+"' title=双击可进行编缉 ondblclick='this.readOnly=false;this.focus()' onblur='this.readOnly=true' readonly>");
25
document.write("<button style='width:60px;height:18px;font-size:12px;margin:1px;border:1px solid #A4B3C8;background-color:#DFE7EF;' type=button onclick=this.nextSibling.style.display='block' onfocus=this.blur()>选择日期</button>");
26
27
document.write("<div style='position:absolute;display:none;text-align:center;width:0px;height:0px;overflow:visible' onselectstart='return false;'>");
28
document.write(" <div style='position:absolute;left:-60px;top:20px;width:142px;height:165px;background-color:#F6F6F6;border:1px solid #245B7D;' class=ds_font>");
29
document.write(" <table cellpadding=0 cellspacing=1 width=140 height=20 bgcolor=#CEDAE7 onmousedown='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' onmouseup='releaseCapture();' onmousemove='dsMove(this.parentNode)' style='cursor:move;'>");
30
document.write(" <tr align=center>");
31
document.write(" <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=subYear(this) title='减小年份'><<</td>");
32
document.write(" <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=subMonth(this) title='减小月份'><</td>");
33
document.write(" <td width=52%><b>"+this.year+"</b><b>年</b><b>"+this.month+"</b><b>月</b></td>");
34
document.write(" <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=addMonth(this) title='增加月份'>></td>");
35
document.write(" <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=addYear(this) title='增加年份'>>></td>");
36
document.write(" </tr>");
37
document.write(" </table>");
38
39
document.write(" <table cellpadding=0 cellspacing=0 width=140 height=20 onmousedown='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' onmouseup='releaseCapture();' onmousemove='dsMove(this.parentNode)' style='cursor:move;'>");
40
document.write(" <tr align=center>");
41
for(i=0;i<7;i++)
42
document.write(" <td>"+week[i]+"</td>");
43
document.write(" </tr>");
44
document.write(" </table>");
45
46
document.write(" <table cellpadding=0 cellspacing=2 width=140 bgcolor=#EEEEEE>");
47
for(i=0;i<6;i++)
48
{
49
document.write(" <tr align=center>");
50
for(j=0;j<7;j++)
51
document.write(" <td width=10% height=16 onmouseover=if(this.innerText!=''&&this.className!='ds_border2')this.className='ds_border' onmouseout=if(this.className!='ds_border2')this.className='' onclick=getValue(this,document.all('DS_"+this.inputName+"'))></td>");
52
document.write(" </tr>");
53
}
54
document.write(" </table>");
55
56
document.write(" <span style=cursor:hand onclick=this.parentNode.parentNode.style.display='none'>【关闭】</span>");
57
document.write(" </div>");
58
document.write("</div>");
59
60
dateShow(document.all("DS_"+this.inputName).nextSibling.nextSibling.childNodes[0].childNodes[2],this.year,this.month)
61
}
62
63
function subYear(obj) //减小年份
64
{
65
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
66
myObj[0].innerHTML=eval(myObj[0].innerHTML)-1;
67
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
68
}
69
70
function addYear(obj) //增加年份
71
{
72
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
73
myObj[0].innerHTML=eval(myObj[0].innerHTML)+1;
74
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
75
}
76
77
function subMonth(obj) //减小月份
78
{
79
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
80
var month=eval(myObj[2].innerHTML)-1;
81
if(month==0)
82
{
83
month=12;
84
subYear(obj);
85
}
86
myObj[2].innerHTML=month;
87
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
88
}
89
90
function addMonth(obj) //增加月份
91
{
92
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
93
var month=eval(myObj[2].innerHTML)+1;
94
if(month==13)
95
{
96
month=1;
97
addYear(obj);
98
}
99
myObj[2].innerHTML=month;
100
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML))
101
}
102
103
function dateShow(obj,year,month) //显示各月份的日
104
{
105
var myDate=new Date(year,month-1,1);
106
var today=new Date();
107
var day=myDate.getDay();
108
var selectDate=obj.parentNode.parentNode.previousSibling.previousSibling.value.split('-');
109
var length;
110
switch(month)
111
{
112
case 1:
113
case 3:
114
case 5:
115
case 7:
116
case 8:
117
case 10:
118
case 12:
119
length=31;
120
break;
121
case 4:
122
case 6:
123
case 9:
124
case 11:
125
length=30;
126
break;
127
case 2:
128
if((year%4==0)&&(year%100!=0)||(year%400==0))
129
length=29;
130
else
131
length=28;
132
}
133
for(i=0;i<obj.cells.length;i++)
134
{
135
obj.cells[i].innerHTML='';
136
obj.cells[i].style.color='';
137
obj.cells[i].className='';
138
}
139
for(i=0;i<length;i++)
140
{
141
obj.cells[i+day].innerHTML=(i+1);
142
if(year==today.getFullYear()&&(month-1)==today.getMonth()&&(i+1)==today.getDate())
143
obj.cells[i+day].style.color='red';
144
if(year==eval(selectDate[0])&&month==eval(selectDate[1])&&(i+1)==eval(selectDate[2]))
145
obj.cells[i+day].className='ds_border2';
146
}
147
}
148
149
function getValue(obj,inputObj) //把选择的日期传给输入框
150
{
151
var myObj=inputObj.nextSibling.nextSibling.childNodes[0].childNodes[0].cells[2].childNodes;
152
if(obj.innerHTML)
153
inputObj.value=myObj[0].innerHTML+"-"+myObj[2].innerHTML+"-"+obj.innerHTML;
154
inputObj.nextSibling.nextSibling.style.display='none';
155
for(i=0;i<obj.parentNode.parentNode.parentNode.cells.length;i++)
156
obj.parentNode.parentNode.parentNode.cells[i].className='';
157
obj.className='ds_border2'
158
}
159
160
function dsMove(obj) //实现层的拖移
161
{
162
if(event.button==1)
163
{
164
var X=obj.clientLeft;
165
var Y=obj.clientTop;
166
obj.style.pixelLeft=X+(event.x-DS_x);
167
obj.style.pixelTop=Y+(event.y-DS_y);
168
}
169
}
170
</script>
171
从
172
<script language=javascript>
173
var myDate=new dateSelector();
174
myDate.year--;
175
myDate.inputName='start_date'; //注意这里设置输入框的name,同一页中日期输入框,不能出现重复的name。
176
myDate.display();
177
</script>
178
到
179
<script language=javascript>
180
myDate.year++;
181
myDate.inputName='end_date'; //注意这里设置输入框的name,同一页中的日期输入框,不能出现重复的name。
182
myDate.display();
183
</script>
184
185
<script language=javascript> 2
var DS_x,DS_y; 3

4
function dateSelector() //构造dateSelector对象,用来实现一个日历形式的日期输入框。 5
{ 6
var myDate=new Date(); 7
this.year=myDate.getFullYear(); //定义year属性,年份,默认值为当前系统年份。 8
this.month=myDate.getMonth()+1; //定义month属性,月份,默认值为当前系统月份。 9
this.date=myDate.getDate(); //定义date属性,日,默认值为当前系统的日。 10
this.inputName=''; //定义inputName属性,即输入框的name,默认值为空。注意:在同一页中出现多个日期输入框,不能有重复的name! 11
this.display=display; //定义display方法,用来显示日期输入框。 12
} 13

14
function display() //定义dateSelector的display方法,它将实现一个日历形式的日期选择框。 15
{ 16
var week=new Array('日','一','二','三','四','五','六'); 17

18
document.write("<style type=text/css>"); 19
document.write(" .ds_font td,span { font: normal 12px 宋体; color: #000000; }"); 20
document.write(" .ds_border { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }"); 21
document.write(" .ds_border2 { border: 1px solid #000000; cursor: hand; background-color: #DDDDDD }"); 22
document.write("</style>"); 23

24
document.write("<input style='text-align:center;' id='DS_"+this.inputName+"' name='"+this.inputName+"' value='"+this.year+"-"+this.month+"-"+this.date+"' title=双击可进行编缉 ondblclick='this.readOnly=false;this.focus()' onblur='this.readOnly=true' readonly>"); 25
document.write("<button style='width:60px;height:18px;font-size:12px;margin:1px;border:1px solid #A4B3C8;background-color:#DFE7EF;' type=button onclick=this.nextSibling.style.display='block' onfocus=this.blur()>选择日期</button>"); 26

27
document.write("<div style='position:absolute;display:none;text-align:center;width:0px;height:0px;overflow:visible' onselectstart='return false;'>"); 28
document.write(" <div style='position:absolute;left:-60px;top:20px;width:142px;height:165px;background-color:#F6F6F6;border:1px solid #245B7D;' class=ds_font>"); 29
document.write(" <table cellpadding=0 cellspacing=1 width=140 height=20 bgcolor=#CEDAE7 onmousedown='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' onmouseup='releaseCapture();' onmousemove='dsMove(this.parentNode)' style='cursor:move;'>"); 30
document.write(" <tr align=center>"); 31
document.write(" <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=subYear(this) title='减小年份'><<</td>"); 32
document.write(" <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=subMonth(this) title='减小月份'><</td>"); 33
document.write(" <td width=52%><b>"+this.year+"</b><b>年</b><b>"+this.month+"</b><b>月</b></td>"); 34
document.write(" <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=addMonth(this) title='增加月份'>></td>"); 35
document.write(" <td width=12% onmouseover=this.className='ds_border' onmouseout=this.className='' onclick=addYear(this) title='增加年份'>>></td>"); 36
document.write(" </tr>"); 37
document.write(" </table>"); 38

39
document.write(" <table cellpadding=0 cellspacing=0 width=140 height=20 onmousedown='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' onmouseup='releaseCapture();' onmousemove='dsMove(this.parentNode)' style='cursor:move;'>"); 40
document.write(" <tr align=center>"); 41
for(i=0;i<7;i++) 42
document.write(" <td>"+week[i]+"</td>"); 43
document.write(" </tr>"); 44
document.write(" </table>"); 45

46
document.write(" <table cellpadding=0 cellspacing=2 width=140 bgcolor=#EEEEEE>"); 47
for(i=0;i<6;i++) 48
{ 49
document.write(" <tr align=center>"); 50
for(j=0;j<7;j++) 51
document.write(" <td width=10% height=16 onmouseover=if(this.innerText!=''&&this.className!='ds_border2')this.className='ds_border' onmouseout=if(this.className!='ds_border2')this.className='' onclick=getValue(this,document.all('DS_"+this.inputName+"'))></td>"); 52
document.write(" </tr>"); 53
} 54
document.write(" </table>"); 55

56
document.write(" <span style=cursor:hand onclick=this.parentNode.parentNode.style.display='none'>【关闭】</span>"); 57
document.write(" </div>"); 58
document.write("</div>"); 59

60
dateShow(document.all("DS_"+this.inputName).nextSibling.nextSibling.childNodes[0].childNodes[2],this.year,this.month) 61
} 62

63
function subYear(obj) //减小年份 64
{ 65
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes; 66
myObj[0].innerHTML=eval(myObj[0].innerHTML)-1; 67
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML)) 68
} 69

70
function addYear(obj) //增加年份 71
{ 72
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes; 73
myObj[0].innerHTML=eval(myObj[0].innerHTML)+1; 74
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML)) 75
} 76

77
function subMonth(obj) //减小月份 78
{ 79
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes; 80
var month=eval(myObj[2].innerHTML)-1; 81
if(month==0) 82
{ 83
month=12; 84
subYear(obj); 85
} 86
myObj[2].innerHTML=month; 87
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML)) 88
} 89

90
function addMonth(obj) //增加月份 91
{ 92
var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes; 93
var month=eval(myObj[2].innerHTML)+1; 94
if(month==13) 95
{ 96
month=1; 97
addYear(obj); 98
} 99
myObj[2].innerHTML=month; 100
dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[0].innerHTML),eval(myObj[2].innerHTML)) 101
} 102

103
function dateShow(obj,year,month) //显示各月份的日 104
{ 105
var myDate=new Date(year,month-1,1); 106
var today=new Date(); 107
var day=myDate.getDay(); 108
var selectDate=obj.parentNode.parentNode.previousSibling.previousSibling.value.split('-'); 109
var length; 110
switch(month) 111
{ 112
case 1: 113
case 3: 114
case 5: 115
case 7: 116
case 8: 117
case 10: 118
case 12: 119
length=31; 120
break; 121
case 4: 122
case 6: 123
case 9: 124
case 11: 125
length=30; 126
break; 127
case 2: 128
if((year%4==0)&&(year%100!=0)||(year%400==0)) 129
length=29; 130
else 131
length=28; 132
} 133
for(i=0;i<obj.cells.length;i++) 134
{ 135
obj.cells[i].innerHTML=''; 136
obj.cells[i].style.color=''; 137
obj.cells[i].className=''; 138
} 139
for(i=0;i<length;i++) 140
{ 141
obj.cells[i+day].innerHTML=(i+1); 142
if(year==today.getFullYear()&&(month-1)==today.getMonth()&&(i+1)==today.getDate()) 143
obj.cells[i+day].style.color='red'; 144
if(year==eval(selectDate[0])&&month==eval(selectDate[1])&&(i+1)==eval(selectDate[2])) 145
obj.cells[i+day].className='ds_border2'; 146
} 147
} 148

149
function getValue(obj,inputObj) //把选择的日期传给输入框 150
{ 151
var myObj=inputObj.nextSibling.nextSibling.childNodes[0].childNodes[0].cells[2].childNodes; 152
if(obj.innerHTML) 153
inputObj.value=myObj[0].innerHTML+"-"+myObj[2].innerHTML+"-"+obj.innerHTML; 154
inputObj.nextSibling.nextSibling.style.display='none'; 155
for(i=0;i<obj.parentNode.parentNode.parentNode.cells.length;i++) 156
obj.parentNode.parentNode.parentNode.cells[i].className=''; 157
obj.className='ds_border2' 158
} 159

160
function dsMove(obj) //实现层的拖移 161
{ 162
if(event.button==1) 163
{ 164
var X=obj.clientLeft; 165
var Y=obj.clientTop; 166
obj.style.pixelLeft=X+(event.x-DS_x); 167
obj.style.pixelTop=Y+(event.y-DS_y); 168
} 169
} 170
</script> 171
从 172
<script language=javascript> 173
var myDate=new dateSelector(); 174
myDate.year--; 175
myDate.inputName='start_date'; //注意这里设置输入框的name,同一页中日期输入框,不能出现重复的name。 176
myDate.display(); 177
</script> 178
到 179
<script language=javascript> 180
myDate.year++; 181
myDate.inputName='end_date'; //注意这里设置输入框的name,同一页中的日期输入框,不能出现重复的name。 182
myDate.display(); 183
</script> 184

185

效果图:



浙公网安备 33010602011771号