datepicker

坚强是说给别人听的谎言 提交于 2020-04-05 19:56:30
代码
/************************************************************************************************************************/
//
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("&lt;</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("&gt;</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 - 11);
 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 });

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!