代码
/************************************************************************************************************************/
//
String.prototype.Trim = function()
{
return this;
}
String.prototype.FormatToDate = function(format)
{
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"H+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"w": "0123456".indexOf(this.getDay()),
"S": this.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
return format;
}
String.prototype.ConvertToDate = function()
{
}
Date.prototype.Format = function(format)
{
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"H+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"w": "0123456".indexOf(this.getDay()),
"S": this.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
return format;
}
Date.prototype.Add = function(interval, number)
{
number = parseInt(number);
var date = new Date(this.toString());
switch (interval) {
case "y": date.setFullYear(date.getFullYear() + number); break;
case "m": date.setMonth(date.getMonth() + number); break;
case "d": date.setDate(date.getDate() + number); break;
case "w": date.setDate(date.getDate() + 7 * number); break;
case "h": date.setHours(date.getHours() + number); break;
case "n": date.setMinutes(date.getMinutes() + number); break;
case "s": date.setSeconds(date.getSeconds() + number); break;
case "l": date.setMilliseconds(date.getMilliseconds() + number); break;
}
return date;
}
Date.prototype.DateDiff = function(interval, d1, d2)
{
switch (interval) {
case "d": //date
case "w":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());
break; //w
case "h":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours());
break; //h
case "n":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours(), d1.getMinutes());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours(), d2.getMinutes());
break;
case "s":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours(), d1.getMinutes(), d1.getSeconds());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours(), d2.getMinutes(), d2.getSeconds());
break;
}
var t1 = d1.getTime(), t2 = d2.getTime();
var diff = NaN;
switch (interval) {
case "y": diff = d2.getFullYear() - d1.getFullYear(); break; //y
case "m": diff = (d2.getFullYear() - d1.getFullYear()) * 12 + d2.getMonth() - d1.getMonth(); break; //m
case "d": diff = Math.floor(t2 / 86400000) - Math.floor(t1 / 86400000); break;
case "w": diff = Math.floor((t2 + 345600000) / (604800000)) - Math.floor((t1 + 345600000) / (604800000)); break; //w
case "h": diff = Math.floor(t2 / 3600000) - Math.floor(t1 / 3600000); break; //h
case "n": diff = Math.floor(t2 / 60000) - Math.floor(t1 / 60000); break; //
case "s": diff = Math.floor(t2 / 1000) - Math.floor(t1 / 1000); break; //s
case "l": diff = t2 - t1; break;
}
return diff;
}
/************************************************************************************************************************/
$(function(){
if ($.fn.noSelect == undefined) {
$.fn.noSelect = function(p) {
if (p == null)
prevent = true;
else
prevent = p;
if (prevent) {
return this.each(function() {
if ($.browser.msie || $.browser.safari) $(this).bind('selectstart', function() { return false; });
else if ($.browser.mozilla) {
$(this).css('MozUserSelect', 'none');
$('body').trigger('focus');
}
else if ($.browser.opera) $(this).bind('mousedown', function() { return false; });
else $(this).attr('unselectable', 'on');
});
} else {
return this.each(function() {
if ($.browser.msie || $.browser.safari) $(this).unbind('selectstart');
else if ($.browser.mozilla) $(this).css('MozUserSelect', 'inherit');
else if ($.browser.opera) $(this).unbind('mousedown');
else $(this).removeAttr('unselectable', 'on');
});
}
}; //end noSelect
};
});
//
String.prototype.Trim = function()
{
return this;
}
String.prototype.FormatToDate = function(format)
{
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"H+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"w": "0123456".indexOf(this.getDay()),
"S": this.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
return format;
}
String.prototype.ConvertToDate = function()
{
}
Date.prototype.Format = function(format)
{
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"H+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"w": "0123456".indexOf(this.getDay()),
"S": this.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
return format;
}
Date.prototype.Add = function(interval, number)
{
number = parseInt(number);
var date = new Date(this.toString());
switch (interval) {
case "y": date.setFullYear(date.getFullYear() + number); break;
case "m": date.setMonth(date.getMonth() + number); break;
case "d": date.setDate(date.getDate() + number); break;
case "w": date.setDate(date.getDate() + 7 * number); break;
case "h": date.setHours(date.getHours() + number); break;
case "n": date.setMinutes(date.getMinutes() + number); break;
case "s": date.setSeconds(date.getSeconds() + number); break;
case "l": date.setMilliseconds(date.getMilliseconds() + number); break;
}
return date;
}
Date.prototype.DateDiff = function(interval, d1, d2)
{
switch (interval) {
case "d": //date
case "w":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());
break; //w
case "h":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours());
break; //h
case "n":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours(), d1.getMinutes());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours(), d2.getMinutes());
break;
case "s":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours(), d1.getMinutes(), d1.getSeconds());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours(), d2.getMinutes(), d2.getSeconds());
break;
}
var t1 = d1.getTime(), t2 = d2.getTime();
var diff = NaN;
switch (interval) {
case "y": diff = d2.getFullYear() - d1.getFullYear(); break; //y
case "m": diff = (d2.getFullYear() - d1.getFullYear()) * 12 + d2.getMonth() - d1.getMonth(); break; //m
case "d": diff = Math.floor(t2 / 86400000) - Math.floor(t1 / 86400000); break;
case "w": diff = Math.floor((t2 + 345600000) / (604800000)) - Math.floor((t1 + 345600000) / (604800000)); break; //w
case "h": diff = Math.floor(t2 / 3600000) - Math.floor(t1 / 3600000); break; //h
case "n": diff = Math.floor(t2 / 60000) - Math.floor(t1 / 60000); break; //
case "s": diff = Math.floor(t2 / 1000) - Math.floor(t1 / 1000); break; //s
case "l": diff = t2 - t1; break;
}
return diff;
}
/************************************************************************************************************************/
$(function(){
if ($.fn.noSelect == undefined) {
$.fn.noSelect = function(p) {
if (p == null)
prevent = true;
else
prevent = p;
if (prevent) {
return this.each(function() {
if ($.browser.msie || $.browser.safari) $(this).bind('selectstart', function() { return false; });
else if ($.browser.mozilla) {
$(this).css('MozUserSelect', 'none');
$('body').trigger('focus');
}
else if ($.browser.opera) $(this).bind('mousedown', function() { return false; });
else $(this).attr('unselectable', 'on');
});
} else {
return this.each(function() {
if ($.browser.msie || $.browser.safari) $(this).unbind('selectstart');
else if ($.browser.mozilla) $(this).css('MozUserSelect', 'inherit');
else if ($.browser.opera) $(this).unbind('mousedown');
else $(this).removeAttr('unselectable', 'on');
});
}
}; //end noSelect
};
});
代码
1 ; (function($) {
2 $.fn.datepicker = function(obj)
3 {
4 var now = new Date();
5 var config = {
6 today: now,
7 prev_month_title: "prev month",
8 next_month_title: "next month",
9 weekStart: 0,
10 weekName: ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],
11 monthName: ["日","一","二","三","四","五","六"],
12 Year: now.getFullYear(), //default year
13 Month: now.getMonth() + 1, //default month
14 Day: now.getDate(), //default date
15 format:"yyyy-MM-dd",
16 inputDate: null
17 }
18 function init(){
19 var that = this;
20
21 //配置属性
22 $.extend(config,obj);
23
24
25 ui = $(this);
26
27 //主动请求
28 setValue()
29
30 _render();
31
32 _initevents();
33
34 this.container = $("#WF_Ctrl_DatePicker");
35 this.datetd = this.container.find("td");//.not(".td-week");
36
37 this.datetd.bind("click",function(){
38 //alert();
39 returndate();
40 });
41
42 //绑定被动请求处理事件
43 ui.click(show);
44
45 }
46 function setValue(){
47 ui.val(config.value);
48 }
49 function _render(){
50 var container = $("#WF_Ctrl_DatePicker");
51 if (container.length == 0) {
52 //拼接并输出到DOM中去
53 var pickerHtml = [];
54 //
55 pickerHtml.push("<div id='WF_Ctrl_DatePicker' class='datepicker_Container' style='width:175px;z-index:999;'>");
56 if ($.browser.msie6) {
57 pickerHtml.push('<iframe style="position:absolute;z-index:-1;width:100%;height:205px;top:0;left:0;scrolling:no;" frameborder="0" src="about:blank"></iframe>');
58 }
59 pickerHtml.push("<table class=\"fixedtable\">");
60 pickerHtml.push("<tr>");
61 pickerHtml.push("<td style='text-align:center;border:1px solid #7b9ebd;height:18px;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#cecfde);' class=\"prevmonth\">");
62 pickerHtml.push("<</td>");
63 pickerHtml.push("<td style='text-align:center;border:1px solid #7b9ebd;height:18px;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#cecfde);' colspan=\"5\">");
64 pickerHtml.push(config.monthName[this.Month]+"</td>");
65 pickerHtml.push("<td style='text-align:center;border:1px solid #7b9ebd;height:18px;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#cecfde);'>");
66 pickerHtml.push("></td>");
67 pickerHtml.push("</tr>");
68
69 //render for week
70 pickerHtml.push("<tr>");
71 for (var i = config.weekStart, j = 0; j < 7; j++) {
72 pickerHtml.push("<td class=\"td-week\">" + config.weekName[i] + "</td>");
73 if (i == 6) { i = 0; } else { i++; }
74 }
75 pickerHtml.push("</tr>");
76
77 var firstdate = new Date(this.Year, this.Month - 1, 1);
78 var diffday = config.weekStart - firstdate.getDay();
79 var showmonth = config.Month - 1;
80 if (diffday > 0) diffday -= 7;
81 var startdate = firstdate.Add("d", diffday);
82 var enddate = startdate.Add("d", 42);
83
84 var selecteddate = container.data("indata") && selecteddate.Format(config.format);
85 var today = now.Format(config.format);
86 var ndate = null;
87 //render for day
88 for (i = 0; i < 6; i++)
89 {
90 pickerHtml.push("<tr>");
91
92 for(ii = 1; ii <= 7; ii++)
93 {
94 var ndate = startdate.Add("d", i*7+ii - 1);
95
96 if (ndate.getMonth() == showmonth)
97 {
98 if ((selecteddate && ndate.Format(config.format) == selecteddate))
99 pickerHtml.push("<td class=\"dt_tagday\"");
100 else if (ndate.Format(config.format) == today)
101 pickerHtml.push("<td class=\"dt_today\"");
102 else
103 pickerHtml.push("<td");
104 }
105 else if (ndate.getMonth() > showmonth)
106 pickerHtml.push("<td class=\"dt-nextday\"");
107 else
108 pickerHtml.push("<td class=\"dt-prevday\"");
109
110 pickerHtml.push(" d=\"" + ndate.valueOf() + "\">" + ndate.getDate() + "</td>");
111 }
112
113 pickerHtml.push("</tr>");
114 }
115 //
116 //xmonth='0'
117
118 pickerHtml.push("<tr>");
119 pickerHtml.push("<td colspan=\"7\" class=\"datepicker_btnsbg\" d=\"" + now.valueOf + "\">今天:" + today + "</td>");
120 pickerHtml.push("</tr>");
121
122
123 pickerHtml.push("</table>");
124 pickerHtml.push("</div>")
125 //...
126 var s = pickerHtml.join("");
127 $(document.body).append(s);
128 container = $("#BBIT_DP_CONTAINER");
129 }
130 }
131 //绑定事件
132 function _initevents() {
133 //1 today btn;
134 $("#BBIT-DP-TODAY").click(returntoday);
135 $("#WF_Ctrl_DatePicker").click(returnfalse);
136
137 $("td.prevmonth").click(_prevmonth);
138 $("td.nextmonth").click(_nextmonth);
139
140 $("td.prevyear").click(_prevyear);
141 $("td.nextyear").click(_nextyear);
142 }
143 //选择上一年
144 function _prevyear() {
145 var y = def.ty - 10
146 def.ty = y;
147 rryear(y);
148 return false;
149 }
150 //选择下一年
151 function _nextyear() {
152 var y = def.ty + 10
153 def.ty = y;
154 rryear(y);
155 return false;
156 }
157 //选择上一个月
158 function _prevmonth(){
159 if (this.Month == 1) {
160 this.Year--;
161 this.Month = 12;
162 }
163 else {
164 this.Month--
165 }
166 this._render();
167 return false;
168 }
169 //选择下一个月
170 function _nextmonth(){
171 if (this.Month == 12) {
172 this.Year++;
173 this.Month = 1;
174 }
175 else {
176 this.Month++
177 }
178 this._render();
179 return false;
180 }
181 function returnfalse() {return false;}
182 //取消选择
183 function mpcancel() {
184 $("#BBIT-DP-MP").animate({ top: -193 }, { duration: 200, complete: function() { $("#BBIT-DP-MP").hide(); } });
185 return false;
186 }
187 //确认选择
188 function mpok() {
189 def.Year = def.cy;
190 def.Month = def.cm + 1;
191 def.Day = 1;
192 $("#BBIT-DP-MP").animate({ top: -193 }, { duration: 200, complete: function() { $("#BBIT-DP-MP").hide(); } });
193 writecb();
194 return false;
195 }
196
197 //返回今天
198 function returntoday() {
199 cp.data("indata", new Date());
200 returndate();
201 }
202 //返回选择的日期
203 function returndate(ctrl) {
204 var ndate = $(this).attr("d")
205 var ndate = new Date(parseInt(ndate, 10));
206
207 ctrl.ui.attr("isshow", "0").val(ndate.Format(ctrl.format));
208 ctrl.container.hide(100);
209 }
210 //字符串转为日期
211 function stringtodate(datestr) {
212 try
213 {
214 var arrs = datestr.split(i18n.datepicker.dateformat.separator);
215 var year = parseInt(arrs[i18n.datepicker.dateformat.year_index]);
216 var month = parseInt(arrs[i18n.datepicker.dateformat.month_index]) - 1;
217 var day = parseInt(arrs[i18n.datepicker.dateformat.day_index]);
218 return new Date(year, month, day);
219 }
220 catch(e)
221 {
222 return null;
223 }
224 }
225 //????
226 function rryear(y) {
227 var s = y - 4;
228 var ar = [];
229 for (var i = 0; i < 5; i++) {
230 ar.push(s + i);
231 ar.push(s + i + 5);
232 }
233 $("#BBIT-DP-MP td.bbit-dp-mp-year").each(function(i) {
234 if (def.Year == ar[i]) {
235 $(this).addClass("bbit-dp-mp-sel");
236 }
237 else {
238 $(this).removeClass("bbit-dp-mp-sel");
239 }
240 $(this).html("<a href='javascript:void(0);'>" + ar[i] + "</a>").attr("xyear", ar[i]);
241 });
242 }
243 //显示日期选择面板
244 function show()
245 {
246 alert();
247 var me = this;
248 var isshow = this.ui.attr("isshow");
249 //hide it initially
250
251 if (isshow == "1") {
252 me.ui.attr("isshow", "0");
253 return false;
254 }
255
256 var cp = this.container;
257
258 var pos = this.ui.offset();
259 var height = this.ui.outerHeight();
260 var newpos = { left: pos.left, top: pos.top + height };
261 var w = this.container.width();
262 var h = cp.height();
263 var bw = document.documentElement.clientWidth;
264 var bh = document.documentElement.clientHeight;
265 if ((newpos.left + w) >= bw) {
266 newpos.left = bw - w - 2;
267 }
268 if ((newpos.top + h) >= bh) {
269 newpos.top = pos.top - h - 2;
270 }
271 if (newpos.left < 0) {
272 newpos.left = 10;
273 }
274 if (newpos.top < 0) {
275 newpos.top = 10;
276 }
277 cp.css(newpos).show();
278
279 this.ui.attr("isshow", "1");
280
281 $(document).one("click", function(e) {
282 me.ui.attr("isshow", "0");
283 cp.hide();
284 });
285
286 return false;
287 }
288 function showym() {
289 var c = this.container;
290 // c.show();
291 // return;
292 // var y = def.Year;
293 // def.cy = def.ty = y;
294 // var m = def.Month - 1;
295 // def.cm = m;
296 // var ms = $("#BBIT-DP-MP td.bbit-dp-mp-month");
297 // for (var i = ms.length - 1; i >= 0; i--) {
298 // var ch = $(ms[i]).attr("xmonth");
299 // if (ch == m) {
300 // $(ms[i]).addClass("bbit-dp-mp-sel");
301 // }
302 // else {
303 // $(ms[i]).removeClass("bbit-dp-mp-sel");
304 // }
305 // }
306 // rryear(y);
307 c.css("top", -193).show().animate({ top: 0 }, { duration: 200 });
308 }
309
310
311
312 return $(this).each(function() {
313 init();
314 });
315 }//end datepicker
316 })(jQuery);
317
318 $(function(){
319 //实例化一个tabs对象
320 //tabs.Select(2);
321 $("#date").datepicker({value:"2011-01-30"});
322 });
2 $.fn.datepicker = function(obj)
3 {
4 var now = new Date();
5 var config = {
6 today: now,
7 prev_month_title: "prev month",
8 next_month_title: "next month",
9 weekStart: 0,
10 weekName: ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],
11 monthName: ["日","一","二","三","四","五","六"],
12 Year: now.getFullYear(), //default year
13 Month: now.getMonth() + 1, //default month
14 Day: now.getDate(), //default date
15 format:"yyyy-MM-dd",
16 inputDate: null
17 }
18 function init(){
19 var that = this;
20
21 //配置属性
22 $.extend(config,obj);
23
24
25 ui = $(this);
26
27 //主动请求
28 setValue()
29
30 _render();
31
32 _initevents();
33
34 this.container = $("#WF_Ctrl_DatePicker");
35 this.datetd = this.container.find("td");//.not(".td-week");
36
37 this.datetd.bind("click",function(){
38 //alert();
39 returndate();
40 });
41
42 //绑定被动请求处理事件
43 ui.click(show);
44
45 }
46 function setValue(){
47 ui.val(config.value);
48 }
49 function _render(){
50 var container = $("#WF_Ctrl_DatePicker");
51 if (container.length == 0) {
52 //拼接并输出到DOM中去
53 var pickerHtml = [];
54 //
55 pickerHtml.push("<div id='WF_Ctrl_DatePicker' class='datepicker_Container' style='width:175px;z-index:999;'>");
56 if ($.browser.msie6) {
57 pickerHtml.push('<iframe style="position:absolute;z-index:-1;width:100%;height:205px;top:0;left:0;scrolling:no;" frameborder="0" src="about:blank"></iframe>');
58 }
59 pickerHtml.push("<table class=\"fixedtable\">");
60 pickerHtml.push("<tr>");
61 pickerHtml.push("<td style='text-align:center;border:1px solid #7b9ebd;height:18px;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#cecfde);' class=\"prevmonth\">");
62 pickerHtml.push("<</td>");
63 pickerHtml.push("<td style='text-align:center;border:1px solid #7b9ebd;height:18px;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#cecfde);' colspan=\"5\">");
64 pickerHtml.push(config.monthName[this.Month]+"</td>");
65 pickerHtml.push("<td style='text-align:center;border:1px solid #7b9ebd;height:18px;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#cecfde);'>");
66 pickerHtml.push("></td>");
67 pickerHtml.push("</tr>");
68
69 //render for week
70 pickerHtml.push("<tr>");
71 for (var i = config.weekStart, j = 0; j < 7; j++) {
72 pickerHtml.push("<td class=\"td-week\">" + config.weekName[i] + "</td>");
73 if (i == 6) { i = 0; } else { i++; }
74 }
75 pickerHtml.push("</tr>");
76
77 var firstdate = new Date(this.Year, this.Month - 1, 1);
78 var diffday = config.weekStart - firstdate.getDay();
79 var showmonth = config.Month - 1;
80 if (diffday > 0) diffday -= 7;
81 var startdate = firstdate.Add("d", diffday);
82 var enddate = startdate.Add("d", 42);
83
84 var selecteddate = container.data("indata") && selecteddate.Format(config.format);
85 var today = now.Format(config.format);
86 var ndate = null;
87 //render for day
88 for (i = 0; i < 6; i++)
89 {
90 pickerHtml.push("<tr>");
91
92 for(ii = 1; ii <= 7; ii++)
93 {
94 var ndate = startdate.Add("d", i*7+ii - 1);
95
96 if (ndate.getMonth() == showmonth)
97 {
98 if ((selecteddate && ndate.Format(config.format) == selecteddate))
99 pickerHtml.push("<td class=\"dt_tagday\"");
100 else if (ndate.Format(config.format) == today)
101 pickerHtml.push("<td class=\"dt_today\"");
102 else
103 pickerHtml.push("<td");
104 }
105 else if (ndate.getMonth() > showmonth)
106 pickerHtml.push("<td class=\"dt-nextday\"");
107 else
108 pickerHtml.push("<td class=\"dt-prevday\"");
109
110 pickerHtml.push(" d=\"" + ndate.valueOf() + "\">" + ndate.getDate() + "</td>");
111 }
112
113 pickerHtml.push("</tr>");
114 }
115 //
116 //xmonth='0'
117
118 pickerHtml.push("<tr>");
119 pickerHtml.push("<td colspan=\"7\" class=\"datepicker_btnsbg\" d=\"" + now.valueOf + "\">今天:" + today + "</td>");
120 pickerHtml.push("</tr>");
121
122
123 pickerHtml.push("</table>");
124 pickerHtml.push("</div>")
125 //...
126 var s = pickerHtml.join("");
127 $(document.body).append(s);
128 container = $("#BBIT_DP_CONTAINER");
129 }
130 }
131 //绑定事件
132 function _initevents() {
133 //1 today btn;
134 $("#BBIT-DP-TODAY").click(returntoday);
135 $("#WF_Ctrl_DatePicker").click(returnfalse);
136
137 $("td.prevmonth").click(_prevmonth);
138 $("td.nextmonth").click(_nextmonth);
139
140 $("td.prevyear").click(_prevyear);
141 $("td.nextyear").click(_nextyear);
142 }
143 //选择上一年
144 function _prevyear() {
145 var y = def.ty - 10
146 def.ty = y;
147 rryear(y);
148 return false;
149 }
150 //选择下一年
151 function _nextyear() {
152 var y = def.ty + 10
153 def.ty = y;
154 rryear(y);
155 return false;
156 }
157 //选择上一个月
158 function _prevmonth(){
159 if (this.Month == 1) {
160 this.Year--;
161 this.Month = 12;
162 }
163 else {
164 this.Month--
165 }
166 this._render();
167 return false;
168 }
169 //选择下一个月
170 function _nextmonth(){
171 if (this.Month == 12) {
172 this.Year++;
173 this.Month = 1;
174 }
175 else {
176 this.Month++
177 }
178 this._render();
179 return false;
180 }
181 function returnfalse() {return false;}
182 //取消选择
183 function mpcancel() {
184 $("#BBIT-DP-MP").animate({ top: -193 }, { duration: 200, complete: function() { $("#BBIT-DP-MP").hide(); } });
185 return false;
186 }
187 //确认选择
188 function mpok() {
189 def.Year = def.cy;
190 def.Month = def.cm + 1;
191 def.Day = 1;
192 $("#BBIT-DP-MP").animate({ top: -193 }, { duration: 200, complete: function() { $("#BBIT-DP-MP").hide(); } });
193 writecb();
194 return false;
195 }
196
197 //返回今天
198 function returntoday() {
199 cp.data("indata", new Date());
200 returndate();
201 }
202 //返回选择的日期
203 function returndate(ctrl) {
204 var ndate = $(this).attr("d")
205 var ndate = new Date(parseInt(ndate, 10));
206
207 ctrl.ui.attr("isshow", "0").val(ndate.Format(ctrl.format));
208 ctrl.container.hide(100);
209 }
210 //字符串转为日期
211 function stringtodate(datestr) {
212 try
213 {
214 var arrs = datestr.split(i18n.datepicker.dateformat.separator);
215 var year = parseInt(arrs[i18n.datepicker.dateformat.year_index]);
216 var month = parseInt(arrs[i18n.datepicker.dateformat.month_index]) - 1;
217 var day = parseInt(arrs[i18n.datepicker.dateformat.day_index]);
218 return new Date(year, month, day);
219 }
220 catch(e)
221 {
222 return null;
223 }
224 }
225 //????
226 function rryear(y) {
227 var s = y - 4;
228 var ar = [];
229 for (var i = 0; i < 5; i++) {
230 ar.push(s + i);
231 ar.push(s + i + 5);
232 }
233 $("#BBIT-DP-MP td.bbit-dp-mp-year").each(function(i) {
234 if (def.Year == ar[i]) {
235 $(this).addClass("bbit-dp-mp-sel");
236 }
237 else {
238 $(this).removeClass("bbit-dp-mp-sel");
239 }
240 $(this).html("<a href='javascript:void(0);'>" + ar[i] + "</a>").attr("xyear", ar[i]);
241 });
242 }
243 //显示日期选择面板
244 function show()
245 {
246 alert();
247 var me = this;
248 var isshow = this.ui.attr("isshow");
249 //hide it initially
250
251 if (isshow == "1") {
252 me.ui.attr("isshow", "0");
253 return false;
254 }
255
256 var cp = this.container;
257
258 var pos = this.ui.offset();
259 var height = this.ui.outerHeight();
260 var newpos = { left: pos.left, top: pos.top + height };
261 var w = this.container.width();
262 var h = cp.height();
263 var bw = document.documentElement.clientWidth;
264 var bh = document.documentElement.clientHeight;
265 if ((newpos.left + w) >= bw) {
266 newpos.left = bw - w - 2;
267 }
268 if ((newpos.top + h) >= bh) {
269 newpos.top = pos.top - h - 2;
270 }
271 if (newpos.left < 0) {
272 newpos.left = 10;
273 }
274 if (newpos.top < 0) {
275 newpos.top = 10;
276 }
277 cp.css(newpos).show();
278
279 this.ui.attr("isshow", "1");
280
281 $(document).one("click", function(e) {
282 me.ui.attr("isshow", "0");
283 cp.hide();
284 });
285
286 return false;
287 }
288 function showym() {
289 var c = this.container;
290 // c.show();
291 // return;
292 // var y = def.Year;
293 // def.cy = def.ty = y;
294 // var m = def.Month - 1;
295 // def.cm = m;
296 // var ms = $("#BBIT-DP-MP td.bbit-dp-mp-month");
297 // for (var i = ms.length - 1; i >= 0; i--) {
298 // var ch = $(ms[i]).attr("xmonth");
299 // if (ch == m) {
300 // $(ms[i]).addClass("bbit-dp-mp-sel");
301 // }
302 // else {
303 // $(ms[i]).removeClass("bbit-dp-mp-sel");
304 // }
305 // }
306 // rryear(y);
307 c.css("top", -193).show().animate({ top: 0 }, { duration: 200 });
308 }
309
310
311
312 return $(this).each(function() {
313 init();
314 });
315 }//end datepicker
316 })(jQuery);
317
318 $(function(){
319 //实例化一个tabs对象
320 //tabs.Select(2);
321 $("#date").datepicker({value:"2011-01-30"});
322 });
来源:https://www.cnblogs.com/Netfeng/archive/2011/02/16/1956452.html
