1 <!doctype html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>日历控件</title>
6 <style type="text/css">
7 #calendar{ width:142px; padding:5px; height:198px; background:#FCF; -webkit-user-select:none; position:absolute;}
8 #calendar div.week span,#calendar span.date{ width:14px; font-size:12px; height:20px; text-align:center; line-height:20px; border:1px solid #ccc; margin:2px; float:left;}
9 #calendar span.date{ background:#fff; cursor:pointer;}
10 #calendar div.week{ clear:both; overflow:hidden;}
11 #calendar div.week span{ font-weight:bold;}
12 #calendar h6{ margin:0; padding:0; font-size:14px; line-height:20px; text-align:center; position:relative; overflow:hidden; height:20px;}
13 #prev,#next{ width:45px; text-align:center; position:absolute; color:blue; cursor:pointer; }
14 #prev{ left:0;}
15 #next{ right:0;}
16 </style>
17 </head>
18
19 <body>
20 <input type="text" value="请输入……" id="input1">
21 </body>
22 </html>
23 <script>
24 input1.onfocus=function(){
25 createCalendar(this);
26 }
27 //input1.onfocus=new Function("this;calendar(this)");
28 function createCalendar(ele){
29 var obj=offset(ele);
30 var l=obj.left;
31 var t=obj.top;
32 var oCalendar=document.getElementById('calendar');
33 if(oCalendar)return;
34 oCalendar=document.createElement('div');
35 oCalendar.style.top=t+'px';
36 oCalendar.style.left=l+ele.offsetWidth+5+'px';
37 oCalendar.id="calendar";
38 var oTitle=document.createElement('h6');
39 oCalendar.appendChild(oTitle);
40 oTitle.className="title";
41 //创建上prev按钮
42 var oPrev=document.createElement('span');
43 oPrev.id="prev";
44 oPrev.innerHTML="prev";
45 oTitle.appendChild(oPrev);
46 oPrev.onclick=function(){activeCalendar(--month);}
47 //创建中间titleContent
48 var oTitleContent=document.createElement('span');
49 //oTitleContent.id="titleContent";
50 oTitle.appendChild(oTitleContent);
51 var d=new Date;
52 var year=d.getFullYear();
53 var month=d.getMonth();
54 var m=month;
55 //oTitleContent.innerHTML=year+"年"+(month+1)+"月"
56 //创建next按钮
57 var oNext=document.createElement('span');
58 oNext.id="next";
59 oNext.innerHTML="next";
60 oNext.onclick=function(){activeCalendar(++month);}
61 oTitle.appendChild(oNext);
62 //创建周的导航栏
63 var aWeek=["日","一","二","三","四","五","六"];
64 var oWeek=document.createElement('div');
65 oWeek.className="week";
66 oCalendar.appendChild(oWeek);
67
68
69 for(var i=0;i<7;i++){
70 var oSpan=document.createElement('span');
71 oSpan.innerHTML=aWeek[i];
72 oWeek.appendChild(oSpan);
73 }
74 //创建日期的容器
75 var oDateContent=document.createElement('div');
76 oDateContent.id="dateContent";
77 oCalendar.appendChild(oDateContent);
78 document.body.appendChild(oCalendar);
79 activeCalendar(month);
80 function activeCalendar(month){
81 oDateContent.innerHTML="";
82 var d1=new Date(year,month,1);
83 var diff=1-d1.getDay();
84 month=d1.getMonth();
85 if(diff==1)diff=-6;
86 d1.setDate(diff);
87
88 oTitleContent.innerHTML=d1.getFullYear()+"年"+(d1.getMonth()+2)+"月"
89 for(var i=0;i<42;i++){
90 var oSpan=document.createElement('span');
91 oSpan.className="date";
92 var currentDate=d1.getDate();
93 oSpan.innerHTML=currentDate;
94 oSpan.curDate=d1.getFullYear()+"-"+(d1.getMonth()+1)+"-"+currentDate;
95 if(d1.getMonth()!=month){
96 oSpan.style.backgroundColor="#ccc";
97 }
98 oSpan.onclick=function(){
99 ele.value=this.curDate;
100 document.body.removeChild(oCalendar);
101 oCalendar=null
102
103 }
104 d1.setDate(++currentDate);
105 oDateContent.appendChild(oSpan);
106 }
107 }
108 }
109
110 function offset(ele){
111 var l=ele.offsetLeft;
112 var t=ele.offsetTop;
113 var p=ele.offsetParent;
114 while(p){
115 if(window.navigator.userAgent.indexOf("MSIE 8")>-1){
116 l+=p.offsetLeft;
117 t+=p.offsetTop;
118 }else{
119 l+=p.offsetLeft+p.clientLeft;
120 t+=p.offsetTop+p.clientTop;
121 }
122 p=p.offsetParent;
123 }
124 return {left:l,top:t}
125 }
126
127 </script>