/**jQuery UI日期选择器1.8.16**版权所有2011,AUTHORS.txt(http://jqueryui.com/关于)*MIT或GPL Version 2许可证下的双重许可。* http://jquery.org/license** http://docs.jquery.com/UI/日期选择器**取决于:*jquery.ui.core.js*/(函数($,未定义){$.extend($.ui,{datepicker:{version:“1.8.16”}});var PROP_NAME='日期选择器';var dpuuid=新日期().getTime();变量instActive;/*日期选择器管理器。使用此类的单例实例$.datepicker与日期选择器进行交互。日期选择器(组)的设置在实例对象中维护,允许在同一页上进行多个不同的设置*/函数Datepicker(){this.debug=错误;//将其更改为true以开始调试这个_curInst=空;//当前正在使用的实例这个_keyEvent=false;//如果最后一个事件是关键事件这个_disabledInputs=[];//已禁用的日期选择器输入列表这个_datepickerShowing=false;//如果显示弹出式选择器,则为True;如果未显示,则为false这个_inDialog=false;//如果显示在“对话框”中,则为True,如果未显示,则为false这个_mainDivId='ui日期选择器div';//主日期选择器分区的ID这个_inlineClass='ui-datepicker-inline';//内联标记类的名称这个_appendClass=“ui-datepicker-append”;//追加标记类的名称这个_triggerClass='ui-datepicker-trigger';//触发器标记类的名称这个_dialogClass='ui-datepicker-dialog';//对话框标记类的名称这个_disableClass='ui-datepicker-disabled';//残疾人覆盖标记类的名称这个_unselectableClass=“ui-datepicker-unselectable”;//不可选择的单元格标记类的名称这个_currentClass='ui-datepicker-currentday';//当前日期标记类的名称这个_dayOverClass='ui-datepicker-days-cell-over';//日悬停标记类的名称this.regional=[];//可用的区域设置,按语言代码索引this.regional[“”]={//默认区域设置closeText:“完成”,//显示关闭链接的文本prevText:'Prev',//显示上月链接的文本nextText:'下一个',//显示下个月的文本链接currentText:'今天',//显示当月链接的文本monthNames:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”],//用于下拉和格式化的月份名称monthNamesShort:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],//用于格式化dayNames:[“星期日”,“星期一”,“周二”,“周三”,“周四”,“周五”,“周六”],//用于格式化dayNamesShort:[“周日”,“周一”,“周二”,“周三”,“周四”,“周五”,“周六”],//用于格式化dayNamesMin:['Su','Mo','Tu','We','Th','Fr','Sa'],//从星期日开始的日期的列标题weekHeader:'Wk',//一年中某一周的列标题dateFormat:'mm/dd/yy',//请参阅parseDate上的格式选项firstDay:0,//一周的第一天,Sun=0,Mon=1。。。isRTL:false,//如果是从右到左的语言,则为True,如果是从左到右,则为falseshowMonthAfterYear:false,//如果选择的年份在月份之前,则为True,如果选择的月份在月份之后,则为falseyearSuffix:''//附加到月份标题中年份的附加文本};这个_defaults={//所有日期选择器实例的全局默认值showOn:“聚焦”,//“聚焦”用于聚焦弹出,//“button”表示触发按钮,或“both”表示两者之一showAnim:'fadeIn',//弹出窗口的jQuery动画名称showOptions:{},//增强动画的选项defaultDate:空,//字段为空时使用:实际日期,//+/-今天的偏移量为nullappendText:'',//显示输入框后面的文本,例如显示格式buttonText:“…”,//触发按钮文本buttonImage:“”,//触发器按钮图像的URLbuttonImageOnly:false,//如果图像单独出现,则为True,如果图像出现在按钮上,则为falsehideIfNoPrevNext:false,//True隐藏下个月/上个月的链接//如果不适用,则为false,仅禁用它们navigationAsDateFormat:false,//如果日期格式应用于前/今天/下一个链接,则为TruegotoCurrent:false,//如果今天的链接返回到当前选择,则为TruechangeMonth:false,//如果可以直接选择月份,则为True,如果仅上一个/下一个,则为falsechangeYear:false,//如果可以直接选择年份,则为True,如果仅上一个/下一个,则为falseyearRange:'c-10:c+10',//要在下拉列表中显示的年份范围,//相对于今天的年份(-nn:+nn),相对于当前显示的年份//(c-nn:c+nn)、绝对值(nnnn:nnnn)或上述值的组合(nnnn:-n)showOtherMonths:false,//True显示其他月份的日期,false保留空白selectOtherMonths:false,//True允许选择其他月份的日期,false表示不可选择showWeek:false,//True表示显示一年中的某一周,false表示不显示calculateWeek:this.iso8601Week,//如何计算一年中的周,//获取Date并返回其周数shortYearCutoff:'+10',//短年份值<这是当前世纪,//>这是在上个世纪,//当前年份+值以“+”开头的字符串值minDate:null,//最早可选择的日期,或null表示无限制maxDate:null,//最新可选日期,或null表示无限制duration:“快速”,//显示/关闭的持续时间beforeShowDay:null,//接受日期并返回数组的函数//[0]=true(如果可选),false(如果不可选),[1]=自定义CSS类名或“”,//[2]=单元格标题(可选),例如$.datepicker.noWeekendsbeforeShow:null,//接受输入字段和//返回日期选择器的一组自定义设置onSelect:null,//选择日期时定义回调函数onChangeMonthYear:null,//定义月份或年份更改时的回调函数onClose:null,//定义日期选择器关闭时的回调函数numberOfMonths:1,//一次显示的月数showCurrentAtPos:0,//以多个月为单位显示当前月份的位置(从0开始)stepMonths:1,//后退/前进的月数stepBigMonths:12,//大链接后退/前进的月数altField:“”,//用于存储所选日期的备用字段的选择器altFormat:“”,//用于替代字段的日期格式constraintInput:true,//输入受当前日期格式约束showButtonPanel:false,//True表示显示按钮面板,false表示不显示autoSize:false,//True用于调整日期格式输入的大小,false用于保持原样disabled:false//初始禁用状态};$.extend(this._defaults,this.regional[“”]);this.dpDiv=绑定悬停($('
'));}$.extend(Datepicker.prototype{/*添加到元素中的类名,表示已经配置了日期选择器*/markerClassName:“hasDatepicker”,//跟踪显示的最大行数(请参阅#7043)最大行数:4,/*调试日志记录(如果启用)*/日志:函数(){if(this.debug)console.log.apply(“”,参数);},//切换到小部件工厂时,TODO重命名为“小部件”_小部件日期选择器:函数(){返回this.dpDiv;},/*覆盖日期选择器的所有实例的默认设置。@param settings对象-要用作默认值的新设置(匿名对象)@返回管理器对象*/setDefaults:函数(设置){extendRemove(this._defaults,settings||{});返回此;},/*将日期选择器附加到jQuery选择。@param target元素-目标输入字段或除法或span@param settings对象-用于此日期选择器实例的新设置(匿名)*/_attachDatepicker:函数(目标,设置){//检查控件本身的设置-在命名空间“date:”中var inlineSettings=空;for(此.defaults中的var attrName){var attrValue=target.getAttribute('date:'+attrName);if(attrValue){inlineSettings=inlineSettings||{};尝试{inlineSettings[attrName]=评估(attrValue);}捕获(错误){inlineSettings[attrName]=attrValue;}}}var nodeName=目标.nodeName.toLowerCase();var inline=(节点名称=='div'||nodeName=='span');if(!target.id){this.uuid+=1;target.id='dp'+this.uuid;}var inst=这个_newInst($(target),内联);inst.settings=$.extend({},设置||{}、inlineSettings||{{});if(节点名称==“输入”){这个_connectDatepicker(目标,指令);}else if(内联){这个_inlineDatepicker(目标,指令);}},/*创建新的实例对象*/_newInst:函数(目标,内联){var id=目标[0].id.replace(/([^A-Za-z0-9_-])/g,'\\\\$1');//转义jQuery元字符return{id:id,input:target,//关联目标selectedDay:0,selectedMonth:0,selectedYear:0,//当前选择drawMonth:0,drawYear:0,//正在提取的月份inline:inline,//是否为datepicker inlinedpDiv:(!inline?this.dpDiv://presentation-dvbindHover($('
')))};},/*将日期选择器附加到输入字段*/_connectDatepicker:函数(target,inst){var输入=$(目标);inst.append=$([]);inst.trigger=$([]);if(input.hasClass(this.markerClassName))回报;这个_附件(输入、安装);input.addClass(this.markerClassName).keydown(this._doKeyDown)。按键(this._doKeyPress).keyup(this._doKeyUp)。bind(“setData.datepicker”,函数(事件、键、值){inst.settings[key]=值;}).bind(“getData.datepicker”,函数(事件,键){返回这个_get(inst,key);});这个_autoSize(inst);$.data(目标,PROP_NAME,安装);//如果disabled选项为true,则在将日期选择器附加到输入后将其禁用(请参阅票据#5665)if(inst.settings.disabled){这个_禁用日期选择器(目标);}},/*根据设置制作附件*/_附件:函数(输入,安装){var appendText=此_get(inst,'appendText');var isRTL=这个_get(inst,'isRTL');if(安装附件)inst.append.remove();if(appendText){inst.append=$(''+appendText+'');输入[isRTL?'之前':'之后'](inst.append);}input.unbind('focus',this._showDatepicker);if(仪表触发器)inst.trigger.remove();var showOn=此_get(inst,'showOn');if(showOn=='focus'||showOn=='both')//在标记字段中弹出日期选择器input.focus(this._showDatepicker);if(showOn=='button'||showOn=='both'){//单击按钮时弹出日期选择器var buttonText=这个_get(inst,'buttonText');var buttonImage=这个_get(inst,'buttonImage');inst.trigger=$(this._get(inst,'buttonImageOnly')?$('').addClass(this._triggerClass)。属性({src:buttonImage,alt:buttonText,title:buttontText}):$('').addClass(this._triggerClass)。html(buttonImage==''?buttonText:$('').属性({src:buttonImage,alt:buttonText,title:buttontText}));输入[isRTL?'之前':'之后'](inst.trigger);inst.trigger.click(函数(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==输入[0])$.datepicker_隐藏日期选择器();其他的$.datepicker_showDatepicker(输入[0]);返回false;});}},/*应用日期格式的最大长度*/_autoSize:函数(inst){if(this._get(inst,'autoSize')&&!inst.inline){var date=新日期(2009年12月1日,20日);//确保两位数var dateFormat=此_get(inst,'dateFormat');if(dateFormat.match(/[DM]/)){var findMax=函数(名称){var最大值=0;var maxI=0;for(var i=0;i<names.length;i++){if(名称[i].length>max){max=名称[i].length;最大i=i;}}返回maxI;};date.setMonth(findMax(this._get(inst,(dateFormat.match(/MM/)?“monthNames”:“monthNamesShort”));date.setDate(findMax(this._get(inst,(dateFormat.match(/DD/)?“dayNames”:“dayName短”))+20-date.getDay());}inst.input.attr('size',this._formatDate(inst,date).length);}},/*将内联日期选择器附加到div*/_inlineDatepicker:函数(target,inst){var divSpan=$(目标);if(divSpan.hasClass(this.markerClassName))回报;divSpan.addClass(this.markerClassName).append(inst.dpDiv)。bind(“setData.datepicker”,函数(事件、键、值){inst.settings[key]=值;}).bind(“getData.datepicker”,函数(事件,键){返回这个_get(inst,key);});$.data(目标,PROP_NAME,安装);这个_setDate(inst,this._getDefaultDate(inst),true);这个_更新日期选择器(inst);这个_updateAlternate(inst);//如果disabled选项为true,则在显示日期选择器之前禁用它(请参阅票据#5665)if(inst.settings.disabled){这个_禁用日期选择器(目标);}//设置display:block代替inst.dpDiv.show(),后者不适用于断开连接的元素// http://bugs.jqueryui.com/ticket/7552-在分离的div上创建的Datepicker高度为零inst.dpDiv.css(“显示”,“块”);},/*在“对话框”中弹出日期选择器。@param输入元素-已忽略@param date字符串或date-要显示的初始日期@param onSelect函数-选择日期时要调用的函数@param settings对象-更新对话框日期选择器实例的设置(匿名对象)@param pos int[2]-对话框在屏幕中的位置坐标,或事件-具有x/y坐标或默认为空(屏幕中心)@返回管理器对象*/_dialogDatepicker:函数(输入、日期、onSelect、设置、位置){var inst=这个_对话Inst;//内部实例if(!inst){this.uuid+=1;var id='dp'+this.uuid;这个_dialogInput=$('');这个_dialogInput.keydown(this._doKeyDown);$(“body”).append(this._dialogInput);inst=这个_dialogInst=这个_newInst(this._dialogInput,false);inst.settings={};$.data(this.dialogInput[0],PROP_NAME,inst);}extendRemove(inst.settings,settings||{});date=(date&&date.constructor==日期?this._formatDate(inst,date):日期);这个_dialogInput.val(日期);这个_pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):空);if(!this.pos){var browserWidth=文档.documentElement.clientWidth;var browserHeight=文档.documentElement.clientHeight;var scrollX=document.documentElement.scrollLeft | | document.body.scroll Left;var scrollY=document.documentElement.scrollTop||document.body.scroll顶部;这个_pos=//应使用以下实际宽度/高度[(浏览器宽度/2)-100+滚动X,(浏览器高度/2)-150+滚动Y];}//移动屏幕上的输入以获得焦点,但隐藏在对话框后面这个_dialogInput.css('left',(this.pos[0]+20)+'px').css('top',this.pos[1]+'px');inst.settings.onSelect=onSelect;这个_inDialog=true;this.dpDiv.addClass(this._dialogClass);这个_showDatepicker(this._dialogInput[0]);if($.blockUI)$.blockUI(this.dpDiv);$.data(this._dialogInput[0],PROP_NAME,inst);返回此;},/*将日期选择器与其控件分离。@param target元素-目标输入字段或除法或span*/_destroyDatepicker:函数(目标){var$target=$(目标);var inst=$.data(目标,PROP_NAME);if(!$target.hasClass(this.markerClassName)){回报;}var nodeName=目标.nodeName.toLowerCase();$.removeData(目标,PROP_NAME);if(节点名称==“输入”){inst.append.remove();inst.trigger.remove();$target.removeClass(this.markerClassName)。unbind('focus',this._showDatepicker)。unbind('keydown',this._doKeyDown)。unbind('keypress',this._doKeyPress)。unbind('keyup',this._doKeyUp);}else if(nodeName==“div”| | nodeName==“span”)$target.removeClass(this.markerClassName).empty();},/*启用jQuery选择的日期选择器。@param target元素-目标输入字段或除法或span*/_enableDatepicker:函数(目标){var$target=$(目标);var inst=$.data(目标,PROP_NAME);if(!$target.hasClass(this.markerClassName)){回报;}var nodeName=目标.nodeName.toLowerCase();if(节点名称==“输入”){target.disabled=假;仪表触发器过滤器(“按钮”)。每个(function(){this.disabled=false;}).end()。过滤器('img').css({不透明度:'1.0',光标:''});}else if(nodeName=='div'||nodeName=='span'){var inline=$target.children('.'+this._inlineClass);inline.children().removeClass('ui-state-disabled');inline.find(“select.ui-datepicker-month,select.ui-datepicturer-year”)。removeAttr(“禁用”);}这个_disabledInputs=$.map(this._disabledInput,函数(值){return(value==target?null:value);});//删除条目},/*禁用jQuery选择的日期选择器。@param target元素-目标输入字段或除法或span*/_disableDatepicker:函数(目标){var$target=$(目标);var inst=$.data(目标,PROP_NAME);if(!$target.hasClass(this.markerClassName)){回报;}var nodeName=目标.nodeName.toLowerCase();if(节点名称==“输入”){target.disabled=真;仪表触发器过滤器(“按钮”)。每个(function(){this.disabled=true;}).end()。过滤器('img').css({不透明度:'0.5',光标:'default'});}else if(nodeName=='div'||nodeName=='span'){var inline=$target.children('.'+this._inlineClass);inline.children().addClass('ui-state-disabled');inline.find(“select.ui-datepicker-month,select.ui-datepicturer-year”)。attr(“禁用”、“禁用”);}这个_disabledInputs=$.map(这个.disabledInputs,函数(值){return(value==target?null:value);});//删除条目这个_disabledInputs[this._disabledInputs.length]=目标;},/*jQuery集合中的第一个字段是否被禁用为日期选择器?@param target元素-目标输入字段或除法或span@return boolean-如果禁用则为true,如果启用则为false*/_isDisabledDatepicker:函数(目标){if(!目标){返回false;}for(var i=0;i<this._disabledInputs.length;i++){if(this._disabledInputs[i]==目标)返回true;}返回false;},/*检索目标控件的实例数据。@param target元素-目标输入字段或除法或span@return对象-关联的实例数据@如果jQuery在获取数据时出现问题,则抛出错误*/_getInst:函数(目标){尝试{返回$.data(目标,PROP_NAME);}捕获(错误){throw'此日期选择器缺少实例数据';}},/*更新或检索附加到输入字段或分区的日期选择器的设置。@param target元素-目标输入字段或除法或span@param name object-要更新的新设置或string—要更改或检索的设置的名称,同时检索所有实例设置的“all”时,或所有全局默认值的“默认值”@param value any-设置的新值(如果上面是一个对象或检索值,则省略)*/_optionDatepicker:函数(目标、名称、值){var inst=这个_getInst(目标);if(arguments.length==2&&typeof name=='string'){return(名称==“defaults”?$.extend({},$.datepicker._defaults):(inst?(name=='all'?$.extend({},inst.settings):这个_get(inst,name):空));}var设置=名称{};if(typeof name==“字符串”){设置={};设置[名称]=值;}如果(inst){if(this._curInst==安装){这个_隐藏日期选择器();}var日期=此_getDateDatepicker(目标,true);var minDate=此_获取最小最大日期(inst,'min');var maxDate=此_获取最小最大日期(inst,'max');extendRemove(inst.settings,settings);//如果dateFormat更改且未提供新的minDate/maxDate,请重新格式化旧的minDate/maxDate值if(minDate!==null&&settings['dateFormat']!==undefined&&setments['minDate']===未定义)inst.settings.minDate=此_格式日期(inst,minDate);if(maxDate!==null&&settings['dateFormat']!==undefined&&setments['maxDate']===未定义)inst.settings.maxDate=此_格式日期(inst,maxDate);这个_附件($(target),inst);这个_autoSize(inst);这个_setDate(指令,日期);这个_updateAlternate(inst);这个_更新日期选择器(inst);}},//更改方法已弃用_changeDatepicker:函数(目标、名称、值){这个_optionDatepicker(目标、名称、值);},/*重新绘制附加到输入字段或分区的日期选择器。@param target元素-目标输入字段或除法或跨度*/_refreshDatepicker:函数(目标){var inst=这个_getInst(目标);if(安装){这个_更新日期选择器(inst);}},/*设置jQuery选择的日期。@param target元素-目标输入字段或除法或span@param date date-新日期*/_setDateDatepicker:函数(目标,日期){var inst=这个_getInst(目标);如果(inst){这个_setDate(指令,日期);这个_更新日期选择器(inst);这个_updateAlternate(inst);}},/*获取jQuery选择中第一个条目的日期。@param target元素-目标输入字段或除法或span@param noDefault boolean-如果不使用默认日期,则为true@return Date-当前日期*/_getDateDatepicker:函数(target,noDefault){var inst=这个_getInst(目标);if(inst&&!inst.inline)这个_setDateFromField(inst,noDefault);return(inst?this._getDate(inst):空);},/*处理按键*/_doKeyDown:函数(事件){var inst=$.datepicker_getInst(event.target);var handled=true;var isRTL=inst.dpDiv.is('.ui-datepicker-rtl');inst._keyEvent=真;if($.datepicker._datepickerShowing)开关(event.keyCode){案例9:$.datepicker_隐藏日期选择器();已处理=假;中断;//隐藏在选项卡上案例13:var sel=$('td.'+$.datepicker._dayOverClass+':not(.'+$.datepicker_当前类+“)”,inst.dpDiv);if(sel[0])$.datepicker_selectDay(事件目标,inst.selectedMonth,inst.slectedYear,sel[0]);var onSelect=$.datepicker_get(inst,'onSelect');if(onSelect){var dateStr=$.datepicker_formatDate(inst)格式;//触发自定义回调onSelect.apply((inst.input?inst.input[0]:空),[dateStr,inst]);}其他的$.datepicker_隐藏日期选择器();返回false;//不要提交表格中断;//输入时选择值案例27:$.datepicker_隐藏日期选择器();中断;//逃跑时躲起来案例33:$.datepicker_调整日期(事件目标,(事件控制键?-$.datepicker_get(inst,'stepBigMonths'):-$.datepicker_get(inst,'stepMonths'),'M');中断;//上一个月/年在上一页/+ctrl案例34:$.datepicker_调整日期(事件目标,(事件控制键?+$.datepicker_get(inst,'stepBigMonths'):+$.datepicker_get(inst,'stepMonths'),'M');中断;//下个月/年在下页/+ctrlcase 35:if(event.ctrlKey ||event.metaKey)$.datepicker_clearDate(event.target);handled=event.ctrlKey||事件.metaKey;中断;//在ctrl或command+end上清除case 36:if(event.ctrlKey ||event.metaKey)$.datepicker_goto今日(event.target);handled=event.ctrlKey | | event.metaKey;中断;//ctrl或command+home上的当前case 37:if(event.ctrlKey ||event.metaKey)$.datepicker_调整日期(事件目标,(isRTL?+1:-1),'D');handled=event.ctrlKey | | event.metaKey;//ctrl或command+left上-1天if(event.originalEvent.altKey)$.datepicker_adjustDate(event.target,(event.ctrlKey?-$.日期选择器_get(inst,'stepBigMonths'):-$.datepicker_get(inst,'stepMonths'),'M');//Mac上alt+left的下个月/下一年断裂;case 38:if(event.ctrlKey ||event.metaKey)$.datepicker_调整日期(事件目标,-7,'D');handled=event.ctrlKey | | event.metaKey;中断;//-ctrl或command+up上1周case 39:if(event.ctrlKey ||event.metaKey)$.datepicker_调整日期(事件目标,(是RTL?-1:+1),'D');handled=event.ctrlKey | | event.metaKey;//ctrl或command+right上+1天if(event.originalEvent.altKey)$.datepicker_调整日期(事件目标,(事件控制键?+$.datepicker_get(inst,'stepBigMonths'):+$.datepicker_get(inst,'stepMonths'),'M');//alt+right上的下个月/年断裂;case 40:if(event.ctrlKey ||event.metaKey)$.datepicker_调整日期(事件目标,+7,'D');handled=event.ctrlKey | | event.metaKey;中断;//+ctrl或command+down上1周默认值:handled=false;}else if(event.keyCode==36&&event.ctrlKey)//在ctrl+home上显示日期选择器$.datepicker_showDatepicker(此);其他{已处理=假;}if(已处理){event.proventDefault();event.stopPropagation();}},/*根据日期格式过滤输入的字符*/_doKeyPress:功能(事件){var inst=$.datepicker_getInst(event.target);if($.datepicker.get(inst,'constrainInput')){var chars=$.datepicker_possibleChars($.datepicker._get(inst,'dateFormat'));var chr=String.fromCharCode(event.charCode==未定义?event.keyCode:event.carCode);return event.ctrlKey||event.metaKey||(chr<''||!chars||chars.indexOf(chr)>-1);}},/*同步手动输入和字段/备用字段*/_doKeyUp:函数(事件){var inst=$.datepicker_getInst(event.target);if(inst.input.val()!=inst.lastVal){尝试{var date=$.datepicker.parseDate($.datepicker._get(inst,'dateFormat'),(inst.input?inst.input.val():空),$.datepicker_getFormatConfig(inst));if(日期){//仅当有效$.datepicker_setDateFromField(inst);$.datepicker_updateAlternate(inst);$.datepicker_更新日期选择器(inst);}}捕获(事件){$.datepicker.log(事件);}}返回true;},/*弹出给定输入字段的日期选择器。如果从beforeShow返回false,则不显示事件处理程序。@param input element-附加到日期选择器的输入字段,或事件-如果由焦点触发*/_showDatepicker:函数(输入){input=input.target||input;if(input.nodeName.toLowerCase()!='input’)//从按钮/图像触发器查找input=$('input',input.parentNode)[0];if($.datepicker._isDisabledDatepicker(input)||$.datepicker_lastInput==input)//已经在这里回报;var inst=$.datepicker_getInst(输入);if($.datepicker._curInst&&$.datepicker._courInst!=指令){如果($.datepicker.datepickerShowing){$.日期选择器_triggerOnClose($.datepicker._curInst);}$.datepicker_curInst.dpDiv.stop(true,true);}var beforeShow=$.datepicker_get(inst,'beforeShow');var beforeShowSettings=beforeShow?beforeShow.apply(input,[input,inst]):{};if(beforeShowSettings===false){//假回报;}extendRemove(inst.settings,在ShowSettings之前);inst.lastVal=空;$.datepicker_lastInput=输入;$.datepicker_setDateFromField(inst);if($.datepicker.inDialog)//隐藏光标input.value=“”;if(!$.datepicker.pos){//位于输入下方$.datepicker_pos=$.datepicker_findPos(输入);$.datepicker_pos[1]+=输入偏移高度;//添加高度}var isFixed=false;$(input).Pparents().each(function(){isFixed|=$(this).css('position')=='fixed';返回!是固定的;});if(isFixed&&$.browser.opera){//修正opera$.datepicker_pos[0]-=document.documentElement.scrollLeft;$.datepicker_pos[1]-=document.documentElement.scrollTop;}var偏移量={left:$.datepicker.pos[0],顶部:$.datepicker.pos[1]};$.datepicker_pos=空;//避免在Firefox上闪烁inst.dp分区空();//确定屏幕外尺寸inst.dpDiv.css({位置:“绝对”,显示:“块”,顶部:“-1000px”});$.datepicker_更新日期选择器(inst);//固定动态日期选取器数的宽度//并在显示前调整位置offset=$.datepicker_checkOffset(安装,偏移,固定);inst.dpDiv.css({位置:($.datepicker._inDialog&&$.blockUI?“static”:(isFixed?“fixed”:“absolute”),显示:“none”,左:offset.left+'px',上:offset.top+'px'});if(!inst.inline){var showAnim=$.datepicker_get(inst,'showAnim');var持续时间=$.datepicker_get(inst,'duration');var postProcess=函数(){var cover=inst.dpDiv.find('iframe.ui-datepicker-cover');//仅IE6如果(!!cover.length){var borders=$.datepicker_获取边框(inst.dpDiv);cover.css({left:-borders[0],top:-borders[1],宽度:inst.dpDiv.outerWidth(),高度:inst.dp Div.outerHeight()});}};inst.dpDiv.zIndex($(input).zIndix()+1);$.日期选择器_datepickerShowing=true;if($.effects&&$.effectors[showAnim])inst.dpDiv.show(showAnim,$.datepicker._get(inst,'showOptions'),持续时间,postProcess);其他的inst.dpDiv[showAnim ||“show”]((showAnim?持续时间:null),postProcess);if(!showAnim||!duration)后处理();if(inst.input.is(':visible))&&!inst.input.is(':禁用')inst.input.focus();$.datepicker_curInst=inst;}},/*生成日期选择器内容*/_updateDatepicker:函数(inst){var self=此;self.maxRows=4//重置显示的最大行数(参见#7043)var borders=$.datepicker_获取边框(inst.dpDiv);instActive=inst;//用于委托悬停事件inst.dpDiv.empty().append(this._generateHTML(inst));var cover=inst.dpDiv.find('iframe.ui-datepicker-cover');//仅IE6if(!!cover.length){//不在IE6中时避免调用outerXXXX()cover.css({left:-borders[0],top:-borders[1],width:inst.dpDiv.outerWidth(),height:inst.dp Div.outerHeight()})}inst.dpDiv.find('.'+this._dayOverClass+'a').mouseover();var numMonths=这个_获取月数(inst);var cols=numMonths[1];var宽度=17;inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-muulti-3 ui-datepecker-multi-4').width('');如果(列>1)inst.dpDiv.addClass('ui-datepicker-multi-'+cols).css('width',(width*cols)+'em');inst.dpDiv[(numMonths[0]!=1||numMonts[1]!=1?'添加':'删除')+“类”](“ui-datepicker-multi”);inst.dpDiv[(this._get(inst,'isRTL')?'添加':'删除')+'类']('ui-datepicker-rtl');if(inst==$.datepicker._curInst&&$.datepicker._datepicker显示&&inst.input&&//#6694-如果输入已经聚焦,就不要聚焦//这将中断IE中的更改事件inst.input.is(':可见')&&!inst.input.is(':禁用')&&inst.input[0]!=document.activeElement)inst.input.focus();//选择年份的不同呈现(以避免Firefox上的闪烁)if(安装年份){var origyearshtml=安装年份shtml;setTimeout(函数(){//确保本年度tml没有变化。if(originyearshtml===inst.yearshtml&&inst.yearshtml){inst.dpDiv.find('select.ui日期选择器年份:第一个').replaceWith(inst.yearshtml);}origyearshtml=inst.yearshtl=null;}, 0);}},/*检索元素的左边框和上边框的大小。@param elem(jQuery对象)感兴趣的元素@返回(数字[2])左边框和上边框*/_getBorders:函数(元素){var convert=函数(值){返回{thin:1,medium:2,thick:3}[value]|value;};return[parseFloat(convert(elem.css('border-left-width')),parseFloat(convert(elem.css('border-top-width'))];},/*检查定位以保持在屏幕上*/_checkOffset:函数(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=文档.documentElement.clientWidth+$(文档).crollLeft();var viewHeight=document.documentElement.clientHeight+$(document).crollTop();offset.left-=(this._get(inst,'isRTL')?(dpWidth-输入宽度):0);offset.left-=(isFixed&&offset.lift==inst.input.offset().left)$(文档).srollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))$(文档).crollTop():0;//现在检查日期选择器是否显示在窗口视口之外——如果是,请移动到更好的位置。offset.left-=数学最小值(offset.lft,(offset-left+dpWidth>viewWidth&&viewWidth>dpWidth)?数学abs(offset.left+dpWidth-viewWidth):0);offset.top-=数学最小值(offset.ttop,(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?数学abs(dpHeight+inputHeight):0);返回偏移;},/*在屏幕上查找对象的位置*/_findPos:函数(obj){var inst=这个_getInst(对象);var isRTL=这个_get(inst,'isRTL');while(obj&&(obj.type=='hidden'||obj.nodeType!=1||$.expr.filters.hidden(obj))){obj=obj[isRTL?'previousSibling':'nextSibling'];}var位置=$(obj).offset();return[position.left,position.top];},/*触发onClose的自定义回调*/_triggerOnClose:函数(inst){var onClose=此_get(inst,'onClose');if(关闭时)onClose.apply((inst.input?inst.input[0]:空),[(inst.input?inst.input.val():“”),inst]);},/*在视图中隐藏日期选取器。@param input element-附加到日期选择器的输入字段*/_hideDatepicker:函数(输入){var inst=这个_当前安装;if(!inst||(输入&&inst!=$.data(输入,PROP_NAME))回报;if(this._datepickerShowing){var showAnim=这个_get(inst,'showAnim');var持续时间=此_get(inst,'duration');var postProcess=函数(){$.datepicker_tidyDialog(inst);这个_curInst=空;};if($.effects&&$.effects[showAnim])inst.dpDiv.hide(showAnim,$.datepicker._get(inst,'showOptions'),持续时间,postProcess);其他的inst.dpDiv[(showAnim=='slideDown'?'slideUp':(showAnim=='fadeIn'?'fadeOut':'hide')]((showAnim?持续时间:null),postProcess);if(!showAnim)后处理();$.datepicker_triggerOnClose(指令);这个_datepickerShowing=false;这个_lastInput=空;if(this._inDialog){这个_dialogInput.css({位置:“绝对”,左侧:“0”,顶部:“-100px”});if($.blockUI){$.unblockUI();$(“body”).append(this.dpDiv);}}这个_inDialog=false;}},/*对话框显示后整理*/_tidyDialog:函数(inst){inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');},/*如果在别处单击,则关闭日期选取器*/_checkExternalClick:函数(事件){if(!$.datepicker._curInst)回报;var$target=$(event.target);if($target[0].id!=$.datepicker._mainDivId&&$target.parents('#'+$.datepicker._mainDivId).length==0&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker_日期选择器显示&&!($.datepicker._inDialog和$.blockUI)$.datepicker_隐藏日期选择器();},/*调整其中一个日期子字段*/_adjustDate:函数(id,offset,period){var目标=$(id);var inst=这个_getInst(目标[0]);if(this._isDisabledDatepicker(目标[0])){回报;}这个_adjustInstDate(指令,偏移+(period=='M'?this._get(inst,'showCurrentAtPos'):0),//撤消定位周期);这个_更新日期选择器(inst);},/*当前链接的操作*/_goto今日:函数(id){var目标=$(id);var inst=这个_getInst(目标[0]);if(this._get(inst,'gotoCurrent')&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear;}其他{var日期=新日期();inst.selectedDay=日期.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=日期.getFullYear();}这个_通知变更(inst);这个_调整日期(目标);},/*选择新月份/年份的操作*/_selectMonthYear:函数(id,select,period){var目标=$(id);var inst=这个_getInst(目标[0]);inst['selected'+(period=='M'?'Month':'Year')]=inst['draw'+(period=='M'?'Month':'Year')]=parseInt(select.options[select.selectedIndex].value,10);这个_通知变更(inst);这个_调整日期(目标);},/*选择日期的操作*/_selectDay:函数(id、month、year、td){var目标=$(id);if($(td).hasClass(this._unselectableClass)||此_isDisabledDatepicker(目标[0]){回报;}var inst=这个_getInst(目标[0]);inst.selectedDay=inst.currentDay=$('a',td).html();inst.selectedMonth=inst.currentMonth=月;inst.selectedYear=inst.currentYear=年份;这个_选择日期(id,this._formatDate(inst,inst.currentDay、inst.currentMonth、inst.crrentYear);},/*清除输入字段并隐藏日期选择器*/_clearDate:函数(id){var目标=$(id);var inst=这个_getInst(目标[0]);这个_选择日期(目标,'');},/*使用所选日期更新输入字段*/_selectDate:函数(id,dateStr){var目标=$(id);var inst=这个_getInst(目标[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input)inst.input.val(dateStr);这个_updateAlternate(inst);var onSelect=此_get(inst,'onSelect');if(onSelect)onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst]);//触发自定义回调else if(inst.input)inst.input.触发器('change');//触发更改事件if(inst.inline)这个_更新日期选择器(inst);其他{这个_隐藏日期选择器();这个_lastInput=inst.input[0];if(typeof(inst.input[0])!='对象')inst.input.focus();//恢复焦点这个_lastInput=空;}},/*更新任何备用字段以与主字段同步*/_updateAlternate:函数(inst){var altField=这个_get(inst,'altField');if(altField){//也更新备用字段var altFormat=此_get(inst,'altFormat')||这个_get(inst,'dateFormat');var日期=此_获取日期(inst);var dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr);});}},/*设置为beforeShowDay函数以防止选择周末。@param date date-要自定义的日期@return[boolean,string]-这个日期可以选择吗?,它的CSS类是什么*/noWeekends:函数(日期){var day=日期.getDay();return[(day>0&&day<6),“];},/*设置为calculateWeek以根据ISO 8601定义确定一年中的星期。@param date date—获取周的日期@return number—包含此日期的年份中的周数*/iso8601Week:函数(日期){var checkDate=新日期(Date.getTime());//从周一开始查找本周的周四checkDate.setDate(checkDat.getDate()+4-(checkData.getDay()||7));var时间=checkDate.getTime();checkDate.setMonth(0);//与1月1日相比checkDate.setDate(1);return数学地板(数学轮((时间-检查日期)/86400000)/7)+1;},/*将字符串值解析为日期对象。有关可能的格式,请参阅下面的formatDate。@param format字符串-日期的预期格式@param值字符串-上述格式的日期@参数设置对象-属性包括:shortYearCutoff数字-用于确定世纪的截止年份(可选)dayNamesShort string[7]-从星期日开始的日期的缩写名称(可选)dayNames字符串[7]-星期日之后的日期名称(可选)monthNames短字符串[12]-月份的缩写名称(可选)monthNames字符串[12]-月份名称(可选)@return Date-提取的日期值,如果值为空,则为null*/parseDate:函数(格式、值、设置){if(format==null||value==null)throw“无效参数”;value=(typeof value==“object”?value.toString():value+“”);if(值==“”)返回null;var shortYearCutoff=(settings?settings.shortYear Cutoff:null)||this_defaults.shortYearCutoff;shortYearCutoff=(类型shortYear Cutoff!='string'?shortYealCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));var dayNamesShort=(settings?settings.dayNamesShort:null)||这个_defaults.dayNamesShort(默认天数名称短);var dayNames=(settings?settings.dayNames:null)||this_defaults.dayNames;var monthNamesShort=(settings?settings.monthNames Short:null)||此_默认值.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this_defaults.monthNames;var年=-1;var月=-1;var日=-1;var doy=-1;var文字=假;//检查格式字符是否加倍var lookAhead=函数(匹配){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==匹配);if(匹配)iFormat++;返回匹配;};//从字符串值中提取数字var getNumber=函数(匹配){var isDoubled=lookAhead(匹配);var大小=(match==“@”?14:(match==“!”?20:(match=='y'和&isDoubled?4:(match=='o'?3:2));var数字=新RegExp('^\\d{1,'+size+'}');var num=value.substring(iValue).match(数字);if(!num)throw“位置缺少数字”+iValue;iValue+=num[0].length;return parseInt(num[0],10);};//从字符串值中提取名称并转换为索引var getName=函数(match,shortNames,longNames){var names=$.map(lookAhead(匹配)?longNames:shortNames,函数(v,k){返回[[k,v]];}).sort(函数(a,b){返回-(a[1]长度-b[1]长度);});var指数=-1;$.each(名称,函数(i,对){var名称=对[1];if(value.substr(iValue,name.length).toLowerCase()==name.toLoverCase(())){索引=对[0];iValue+=名称长度;返回false;}});if(索引!=-1)收益指数+1;其他的throw“位置未知名称”+iValue;};//确认文字字符与字符串值匹配var checkLiteral=函数(){if(value.charAt(iValue)!=format.charAt(iFormat))throw“位置处的意外文字”+iValue;iValue++;};var iValue=0;for(var iFormat=0;iFormat<format.length;iFormat++){if(文字)if(format.charAt(iFormat)==“'”&&!lookAhead(“”)literal=false;其他的checkLiteral();其他的开关(format.charAt(iFormat)){案例“d”:天=getNumber(d');断裂;案例“D”:getName('D',dayNamesShort,dayName);断裂;大小写“o”:doy=getNumber('o');断裂;案例'm':月=getNumber(m');断裂;案例“M”:month=getName('M',monthNamesShort,monthName);断裂;案例“y”:年份=getNumber('y');断裂;案例“@”:var date=新日期(getNumber('@'));year=date.getFullYear();月=date.getMonth()+1;day=日期.getDate();断裂;案例“!”:var date=new date((getNumber('!'))-这_ticksTo1970)/10000);year=date.getFullYear();月=date.getMonth()+1;day=date.getDate();断裂;案例“”:if(lookAhead(“”))checkLiteral();其他的literal=true;断裂;违约:checkLiteral();}}if(iValue<value.length){throw“在date:中找到额外/未分析的字符”+value.substring(iValue);}如果(年份==-1)year=new Date().getFullYear();否则,如果(年份<100)年+=new Date().getFullYear()-new Date.getFull()%100+(年份<=shortYearCutoff?0:-100);如果(doy>-1){月=1;天=doy;做{var dim=这个_getDaysInMonth(年,月-1);if(日<=日)断裂;月份++;白天-=昏暗;}while(true);}var日期=此_daylightSavingAdjust(新日期(年,月-1,日));if(date.getFullYear()!=年||date.getMonth()+1!=月||date.getDate()!=天)throw“无效日期”;//例如,2001年2月31日返回日期;},/*标准日期格式*/原子能:'yy-mm-dd',//RFC 3339(ISO 8601)库克群岛:“D,dd M yy”,ISO_8601:“年-月-日”,RFC_822:“D,D M y”,RFC_850:“DD,DD-M-y”,RFC_1036:“年月日”,RFC_1123:“年月日”,RFC_2822:“年月日”,RSS:“D,D M y”,//RFC 822勾选:'!',时间戳:“@”,W3C:“yy-mm-dd”,//ISO 8601_到1970年:((1970-1)*365+数学基础(1970/4)-数学基础(1970/100)+数学楼(1970/400)*24*60*60*10000000),/*将日期对象格式化为字符串值。格式可以是以下内容的组合:d-月日(无前导零)dd-月日(两位数)o-一年中的第几天(无前导零)oo-一年中的第几天(三位数)D-日名称缩写DD-天数m-月份(无前导零)mm-月份(两位数)M-月份名称缩写MM-长月份名称y-年份(两位数)yy-年份(四位数字)@-Unix时间戳(自1970年1月1日起毫秒)! - 窗口刻度(自2001年1月1日起为100纳秒)'...' - 文字文本“”-单引号@param format字符串-所需的日期格式@param date date—要格式化的日期值@参数设置对象-属性包括:dayNamesShort string[7]-从星期日开始的日期的缩写名称(可选)dayNames字符串[7]-从星期日开始的日期名称(可选)monthNamesShort string[12]-月份的缩写名称(可选)monthNames字符串[12]-月份的名称(可选)@返回字符串-上述格式的日期*/formatDate:函数(格式、日期、设置){if(!日期)返回“”;var dayNamesShort=(settings?settings.dayNames短:null)||此_defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this_defaults.day名称;var monthNamesShort=(settings?settings.monthNames Short:null)||此_默认值.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this_defaults.monthNames;//检查格式字符是否加倍var lookAhead=函数(匹配){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==匹配);if(匹配)iFormat++;返回匹配;};//设置数字格式,必要时使用前导零var formatNumber=函数(match,value,len){var num=“”+值;if(lookAhead(match))while(数字长度<长度)num=“0”+num;返回num;};//根据要求设置名称格式,短或长var formatName=函数(match、value、shortNames、longNames){return(lookAhead(匹配)?longNames[value]:shortNames[value]);};var输出=“”;var文字=假;if(日期)for(var iFormat=0;iFormat<format.length;iFormat++){if(文字)if(format.charAt(iFormat)==“'”&&!lookAhead(“”)文字=错误;其他的output+=format.charAt(iFormat);其他的开关(format.charAt(iFormat)){案例“d”:output+=formatNumber('d',date.getDate(),2);断裂;案例“D”:output+=formatName('D',date.getDay(),dayNamesShort,dayName);断裂;大小写“o”:output+=formatNumber('o',数学.round((new Date(Date.getFullYear(),Date.getMonth(),Date.getDate()).getTime()-新日期(Date.gETFullYea(),0,0).getName())/8640000),3);断裂;案例'm':output+=formatNumber('m',date.getMonth()+1,2);断裂;案例“M”:output+=formatName('M',date.getMonth(),monthNamesShort,monthName);断裂;案例“y”:output+=(lookAhead('y')?date.getFullYear():(date.getYear()%100<10?'0':'')+date.getYear()%100);断裂;案例“@”:output+=日期.getTime();断裂;案例“!”:output+=date.getTime()*10000+this_滴答声至1970;断裂;案例“”:if(lookAhead(“”))输出+=“”;其他的文字=真;断裂;违约:output+=format.charAt(iFormat);}}返回输出;},/*从日期格式中提取所有可能的字符*/_possibleChars:函数(格式){var chars=“”;var文字=假;//检查格式字符是否加倍var lookAhead=函数(匹配){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==匹配);if(匹配)iFormat++;返回匹配;};for(var iFormat=0;iFormat<format.length;iFormat++)if(文字)if(format.charAt(iFormat)==“'”&&!lookAhead(“”)literal=false;其他的chars+=format.charAt(iFormat);其他的开关(format.charAt(iFormat)){案例'd':案例'm':案例‘y’:案例‘@’:字符+='0123456789';断裂;案例“D”:案例“M”:返回null;//接受任何事情案例“”:if(lookAhead(“”))chars+=“”;其他的literal=true;断裂;违约:chars+=format.charAt(iFormat);}返回字符;},/*获取设置值,如有必要,使用默认值*/_get:函数(inst,name){return inst.settings[名称]!==未定义?inst.settings[名称]:这个_默认值[名称];},/*分析现有日期并初始化日期选择器*/_setDateFromField:函数(inst,noDefault){if(inst.input.val()==inst.lastVal){回报;}var dateFormat=此_get(inst,'dateFormat');var dates=inst.lastVal=inst.input?inst.input.val():空;var日期,defaultDate;date=defaultDate=此_获取默认日期(inst);var设置=此_获取格式配置(inst);尝试{date=this.parseDate(dateFormat,dates,settings)||defaultDate;}捕获(事件){this.log(事件);dates=(noDefault?'':日期);}inst.selectedDay=日期.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=日期.getFullYear();inst.currentDay=(dates?date.getDate():0);inst.currentMonth=(dates?date.getMonth():0);inst.currentYear=(dates?date.getFullYear():0);这个_调整安装日期(安装);},/*检索打开时显示的默认日期*/_getDefaultDate:函数(inst){返回这个_restrictMinMax(指令,这个_determineDate(inst、this._get(inst,'defaultDate')、new Date());},/*日期可以指定为精确值或相对值*/_determineDate:函数(inst,date,defaultDate){var offsetNumeric=函数(偏移){var日期=新日期();date.setDate(date.getDate)+偏移量);返回日期;};var offsetString=函数(偏移){尝试{return$.datepicker.parseDate($.datepicker._get(inst,'dateFormat'),偏移量,$.datepicker_getFormatConfig(inst));}捕捉(e){//忽略}var日期=(offset.toLowerCase().match(/^c/)?$.datepicker_getDate(inst):null)||新日期();var year=日期.getFullYear();var month=日期.getMonth();var day=日期.getDate();var模式=/([+-]?[0-9]+)\s*(d|d|w|w|m|m|y|y)/克;var matches=pattern.exec(偏移量);while(匹配){开关(匹配[2]||'d'){案例“d”:案例“d”:day+=parseInt(匹配[1],10);断裂;大小写“w”:大小写“w”:day+=parseInt(匹配[1],10)*7;断裂;案例'm':案例'm':月+=parseInt(匹配[1],10);day=Math.min(天,$.datepicker._getDaysInMonth(年,月));断裂;案例“y”:案例“y”:年+=parseInt(匹配[1],10);day=Math.min(天,$.datepicker._getDaysInMonth(年,月));断裂;}matches=pattern.exec(偏移量);}返回新的日期(年、月、日);};var newDate=(date==null | | date===''?默认日期:(typeof date=='string'?offsetString(date):(日期类型==“数字”?(是NaN(日期)?defaultDate:offsetNumeric(date)):新日期(date.getTime()));newDate=(newDate&&newDate.toString()==“无效日期”?默认日期:newDate);if(newDate){newDate.setHours(0);newDate.setMinutes(0);newDate.setSeconds(0);newDate.setMilliseconds(0);}返回这个_日光节约调整(新日期);},/*手柄开关切换至夏令时。夏令时切换时的小时数可能不为零:>12时午夜转换,但无法生成午夜日期时间,所以跳到1AM,否则重置。@param date(date)要检查的日期@返回(日期)更正的日期*/_daylightSavingAdjust:函数(日期){if(!date)返回null;date.setHours(date.getHours()>12?date.getHours()+2:0);返回日期;},/*直接设置日期*/_setDate:函数(inst,date,noChange){var清除=!日期;var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;var newDate=此_restrictMinMax(inst,this._determineDate(inst,date,new date()));inst.selectedDay=inst.currentDay=newDate.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=newDate.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=newDate.getFullYear();if((origMonth!=inst.selectedMonth||origYear!=inst.selectedYear)&&!无更改)这个_通知变更(inst);这个_调整安装日期(安装);if(inst.input){inst.input.val(清除?'':this._formatDate(inst));}},/*直接检索日期*/_getDate:函数(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()==“”)?无效的:这个_日光节约调整(新日期(inst.currentYear、inst.currentMonth、inst.crrentDay));return startDate;},/*为日期选择器的当前状态生成HTML*/_generateHTML:函数(inst){var today=新日期();今天=这个_日光节约调整(new Date(today.getFullYear(),today.getMonth(),doday.getDate());//空闲时间var isRTL=这个_get(inst,'isRTL');var showButtonPanel=此_get(inst,“showButtonPanel”);var hideIfNoPrevNext=此_get(inst,'hideIfNoPrevNext');var navigationAsDateFormat=此_get(inst,'navigationAsDateFormat');var numMonths=这个_获取月数(inst);var showCurrentAtPos=此_get(inst,'showCurrentAtPos');var stepMonths=这个_get(inst,'stepMonths');var isMultiMonth=(numMonth[0]!=1||numMonth[1]!=1);var currentDate=这个_daylightSavingAdjust((!inst.currentDay?新日期(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay);var minDate=此_获取最小最大日期(inst,'min');var maxDate=此_获取最小最大日期(inst,'max');var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--;}if(maxDate){var maxDraw=这个_daylightSavingAdjust(新日期(maxDate.getFullYear(),maxDate.getMonth()-(numMonths[0]*numMonts[1])+1,maxDate.getDate()));maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);while(this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--;}}}inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=此_get(inst,'prevText');prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,这个_daylightSavingAdjust(新日期(drawYear,drawMonth-stepMonths,1)),这个_getFormatConfig(inst));var prev=(this.canAdjustMonth(inst,-1,drawYear,drawMonth)?''+prevText+'' :(hideIfNoPrevNext?“:”'+prevText+''));var nextText=这个_get(inst,'nextText');nextText=(!navigationAsDateFormat?next文字:this.formatDate(next文本,这个_daylightSavingAdjust(新日期(drawYear,drawMonth+stepMonths,1)),这个_getFormatConfig(inst));var next=(this.canAdjustMonth(inst,+1,drawYear,drawMonth)?''+nextText+'' :(hideIfNoPrevinNext?'':''+nextText+''));var currentText=此_get(inst,'currentText');var gotoDate=(this._get(inst,'gotoCurrent')&&inst.currentDay?currentDate:今天);当前文本=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst));var控件=(!inst.inline?'' : '');var buttonPanel=(showButtonPanel)?'
“+(isRTL?控件:”“)”+(this._isInRange(inst,gotoDate)?”“:”)+(isRTL?“”:控件)+”
' : '';var firstDay=parseInt(this._get(inst,'firstDay'),10);firstDay=(isNaN(firstDay)?0:firstDay);var showWeek=这个_get(inst,'showWeek');var dayNames=这个_get(inst,'dayNames');var dayNamesShort=此_get(inst,'dayNamesShort');var dayNamesMin=这个_get(inst,'dayNamesMin');var monthNames=这个_get(inst,'monthNames');var monthNamesShort=这个_get(inst,'monthNamesShort');var beforeShowDay=此_get(inst,'beforeShowDay');var showOtherMonths=此_get(inst,'showOtherMonths');var selectOtherMonths=此_get(inst,'selectOtherMonths');var calculateWeek=这个_get(inst,'calculateWeek')||this.iso8601Week;var defaultDate=此_获取默认日期(inst);var html=“”;for(var行=0;行<numMonths[0];行++){var组=“”;this.maxRows=4;for(var col=0;col<numMonths[1];col++){var selectedDate=此_daylightSavingAdjust(新日期(drawYear、drawMonth、inst.selectedDay));var cornerClass='ui-corner-all';var日历=“”;if(是MultiMonth){日历+='
';}日历+='
' +(/all|left/.test(cornerClass)&&行==0?(isRTL?下一个:上一个):“”)+(/all|right/.test(cornerClass)&&row==0?(isRTL?上一个:下一个):“”)+这个_generateMonthYearHeader(inst、drawMonth、drawYear、minDate、maxDate、,row>0||col>0,monthNames,monthNamesShort)+//绘制月份标题'
' +'';var thead=(showWeek?'' : '');for(var dow=0;dow<7;dow++){//一周中的天数var日=(dow+firstDay)%7;thead+='= 5 ? ' class=“ui-datepicker-week-end”':'')+'>'+''+dayNamesMin[day]+'';}日历+=thead+'';var daysInMonth=这个_getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth)inst.selectedDay=数学最小值(inst.seleectedDay,daysInMonth);var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var curRows=数学.ceil((leadDays+daysInMonth)/7);//计算要生成的行数var numRows=(isMultiMonth?this.maxRows>curRows?this.axRows:curRows:curRows)//如果是多个月,则使用较高的行数(请参见#7043)this.maxRows=行数;var printDate=此_daylightSavingAdjust(新日期(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow<numRows;dRow++){//创建日期选取器行日历+='';var tbody=(!showWeek?'':'');for(var dow=0;dow<7;dow++){//创建日期选取器天数var daySettings=(beforeShowDay?)?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,'']);var otherMonth=(printDate.getMonth()!=drawMonth);var unselecble=(其他月份&&!选择其他月份)||!日设置[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);tbody+=''; // 显示可选日期打印日期设置日期(printDate.getDate()+1);printDate=此_日光节约调整(打印日期);}日历+=tbody+'';}drawMonth++;如果(drawMonth>11){drawMonth=0;drawYear++;}日历+='
“+这个_get(inst,'weekHeader')+'
' +这个_get(inst,'calculateWeek')(printDate)+''+//操作(其他月份&&!显示其他月份?''://显示其他月份(不可选择?”'+printDate.getDate()+'' : ''+printDate.getDate()+'')) + '
“+(是MultiMonth吗?”
' + ((numMonths[0]>0&&col==numMonth[1]-1)?'
' : '') : '');group+=日历;}html+=组;}html+=buttonPanel+($.browser.msie&&parseInt($.blowser.version,10)<7&&!inst.inline?'' : '');inst._keyEvent=假;返回html;},/*生成月份和年份标题*/_generateMonthYearHeader:函数(inst,drawMonth,drawYear,minDate,maxDate,secondary、monthNames、monthNamesShort){var changeMonth=此_get(inst,'changeMonth');var changeYear=此_get(inst,'changeYear');var showMonthAfterYear=此_get(inst,'showMonthAfterYear');var html='
';var monthHtml=“”;//月份选择if(辅助||!changeMonth)monthHtml+=''+monthNames[drawMonth]+'';其他{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);月Html+='';}if(!showMonthAfterYear)html+=monthHtml+(secondary||!(changeMonth&&changeYear)?' ' : '');//年份选择if(!inst.yearshtml){inst.yearshtml=“”;if(secondary||!changeYear)html+=''+drawYear+'';其他{//确定要显示的年份范围var年=这个_get(inst,'yearRange').split(':');var thisYear=new Date().getFullYear();var determineYear=函数(值){var年份=(value.match(/c[+-].*/)?drawYear+parseInt(value.substring(1),10):(值匹配(/[+-].*/)?thisYear+parseInt(值,10):parseInt(值,10));回报(NaN(年)?thisYear:年);};var year=determineYear(年[0]);var endYear=Math.max(年,determineYear(年[1]|''));年=(minDate?Math.max(year,minDate.getFullYear()):年);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear():endYear);inst.yearshtml+='';html+=inst.yearshtml;inst.yearshtml=空;}}html+=这个_get(inst,'yearSuffix');if(显示年份之后的月份)html+=(secondary||!(changeMonth&&changeYear)?'':'')+月Html;html+='
'; // 关闭datepicker_header返回html;},/*调整其中一个日期子字段*/_adjustInstDate:函数(inst,offset,period){var year=inst.drawYear+(period=='Y'?offset:0);var month=inst.drawMonth+(周期=='M'?偏移量:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(年,月))+(周期=='D'?偏移量:0);var日期=此_restrictMinMax(指令,这个_daylightSavingAdjust(新日期(年、月、日));inst.selectedDay=日期.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=日期.getFullYear();if(period==“M”|| period==“Y”)这个_通知变更(inst);},/*确保日期在任何最小/最大范围内*/_restrictMinMax:函数(inst,date){var minDate=此_获取最小最大日期(inst,'min');var maxDate=此_获取最小最大日期(inst,'max');var newDate=(minDate&&date<minDate?minDate:date);newDate=(maxDate&&newDate>maxDate?maxDate:newDate);return newDate;返回newDate;},/*通知月份/年份的变化*/_notifyChange:函数(inst){var onChange=此_get(inst,'onChangeMonthYear');if(onChange)onChange.apply((inst.input?inst.input[0]:空),[inst.selectedYear,inst.selectredMonth+1,inst]);},/*确定要显示的月份数*/_getNumberOfMonths:函数(inst){var numMonths=这个_get(inst,'numberOfMonths');return(numMonths==null?[1,1]:(numMonths的类型=='number'?[1],numMonts]:numMonth);},/*确定当前的最大日期-确保没有设置时间组件*/_getMinMaxDate:函数(inst,minMax){返回这个_determineDate(inst,this._get(inst、minMax+‘Date’),null);},/*找出给定月份中的天数*/_getDaysInMonth:函数(年、月){返回32-这个_daylightSavingAdjust(新日期(年、月、32)).getDate();},/*查找每个月的第一个星期的第几天*/_getFirstDayOfMonth:函数(年、月){return new Date(year,month,1).getDay();},/*确定是否应允许“下一个/上一个”月的显示更改*/_canAdjustMonth:函数(inst、offset、curYear、curMonth){var numMonths=这个_获取月份数(inst);var日期=此_daylightSavingAdjust(新日期(curYear,curMonth+(偏移量<0?偏移量:numMonths[0]*numMonth[1]),1);if(偏移<0)date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()));返回这个_isInRange(安装,日期);},/*给定的日期是否在可接受的范围内*/_isInRange:函数(inst,date){var minDate=此_获取最小最大日期(inst,'min');var maxDate=这个_获取最小最大日期(inst,'max');return((!minDate||date.getTime()>=minDate.getTime))&&(!maxDate||date.getTime()<=maxDate.getTime));},/*提供格式化/分析的配置设置*/_getFormatConfig:函数(inst){var shortYearCutoff=此_get(inst,'shortYearCutoff');shortYearCutoff=(类型shortYear Cutoff!='string'?shortYealCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYear截止,dayNamesShort:这个_get(inst,'dayNamesShort'),dayNames:this_get(inst,'dayNames'),monthNamesShort:这个_get(inst,'monthNamesShort'),monthNames:this_get(inst,'monthNames')};},/*设置给定日期的格式以便显示*/_formatDate:函数(inst、day、month、year){if(!天){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear;}var日期=(day?(typeof day==‘object’?day:这个_daylightSavingAdjust(新日期(年、月、日)):这个_daylightSavingAdjust(新日期(inst.currentYear、inst.currenMonth、inst.crrrentDay));return this.formatDate(this._get(inst,'dateFormat'),date,this_getFormatConfig(inst));}});/**为datepicker元素绑定悬停事件。*通过委托完成,因此绑定在父div的生存期内只发生一次。*由_updateDatepicker设置的全局instActive允许处理程序找到返回活动picker的方法。*/ 函数bindHover(dpDiv){var selector='按钮,.ui-datepicker-prev,.ui-datepicker下一个,.ui-日期选择器日历td a';return dpDiv.bind('mouseout',函数(事件){var元素=$(event.target).closest(选择器);if(!元素长度){回报;}elem.removeClass(“ui-state-hover ui-datepicker-prev-hover ui-datepicker next-hover”);}).bind('mouseover',函数(事件){var elem=$(event.target).最接近(选择器);if($.datepicker.isDisabledDatepicker(instActive.inline?dpDiv.Pparent()[0]:instActive.input[0])||!构件长度){回报;}elem.parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');elem.addClass(“ui-state-hover”);if(elem.hasClass('ui-datepicker-prev'))elem.addClass(`ui-datepicker-prev-hover');if(elem.hasClass('ui-datepicker-next'))elem.addClass(`ui-datepicker-nex-hover');});}/*jQuery扩展现在忽略空值*/function extendRemove(目标,道具){$.extend(目标,道具);for(props中的var名称)if(props[name]==null ||props[name]==未定义)target[name]=道具[name];回报目标;};/*确定对象是否为数组*/函数isArray(a){返回(a&&(($.browser.safari&&typeof a==“对象”&&a.length)||(a.constructor&&a.construstor.toString().match(/\Array\(\)/));};/*调用日期选择器功能。@param options string—一个命令,可以选择后跟其他参数或对象-附加新日期选择器功能的设置@返回jQuery对象*/$.fn.datepicker=函数(选项){/*验证未通过空集合-修复#6976*/如果(!this.length){返回此;}/*初始化日期选择器*/if(!$.datepicker.initialized){$(文档).mousedown($.datepicker_checkExternalClick)。find('body').append($.datepicker.dpDiv);$.datepicker.initialized=true;}var otherArgs=Array.prototype.slice.call(参数,1);if(选项类型=='string'&&(选项=='isDisabled'||options=='getDate'||options=='widget'))return$.datepicker['_'+options+'datepicker']。apply($.datepicker,[this[0]].concat(otherArgs));if(options==“option”&&arguments.length==2&&typeof arguments[1]==“string”)return$.datepicker['_'+options+'datepicker']。apply($.datepicker,[this[0]].concat(otherArgs));return this.each(function(){typeof options==“字符串”?$.datepicker['_'+选项+'datepicker']。apply($.datepicker,[this].concat(otherArgs)):$.datepicker_attachDatepicker(此,选项);});};$.datepicker=新datepicker();//单实例$.datepicker.initialized=false;$.datepicker.uuid=新日期().getTime();$.datepicker.version=“1.8.16”;//#4055的解决方案//添加另一个全局变量以避免内联事件处理程序的无冲突问题窗口['DP_jQuery_'+dpuuid]=$;})(jQuery);