/* * 日期插件 * 滑动选取日期(年,月,日) * V1.1 */ (function ($) { $.fn.date = function (options,Ycallback,Ncallback) { //插件默认选项 var that = $(this); var docType = $(this).is('input'); var datetime = false; if(that.val()!=''){ var nowdate = new Date(that.val()); }else{ var nowdate = new Date(); } var indexY=1,indexM=1,indexD=1; var indexH=1,indexI=1,indexS=0; var initY=parseInt((nowdate.getYear()+"").substr(1,2)); var initM=parseInt(nowdate.getMonth()+"")+1; var initD=parseInt(nowdate.getDate()+""); var initH=parseInt(nowdate.getHours()); var initI=parseInt(nowdate.getMinutes()); var initS=parseInt(nowdate.getYear()); var yearScroll=null,monthScroll=null,dayScroll=null; var HourScroll=null,MinuteScroll=null,SecondScroll=null; $.fn.date.defaultOptions = { beginyear:2000, //日期--年--份开始 endyear:2020, //日期--年--份结束 beginmonth:1, //日期--月--份结束 endmonth:12, //日期--月--份结束 beginday:1, //日期--日--份结束 endday:31, //日期--日--份结束 beginhour:1, endhour:12, beginminute:00, endminute:59, curdate:true, //打开日期是否定位到当前日期 theme:"date", //控件样式(1:日期,2:日期+时间) mode:null, //操作模式(滑动模式) event:"click", //打开日期插件默认方式为点击后后弹出日期 show:true } //用户选项覆盖插件默认选项 var opts = $.extend( true, {}, $.fn.date.defaultOptions, options ); if(opts.theme === "datetime"){datetime = true;} if(!opts.show){ that.unbind('click'); } else{ //绑定事件(默认事件为获取焦点) that.bind(opts.event,function () { createUL(); //动态生成控件显示的日期 init_iScrll(); //初始化iscrll extendOptions(); //显示控件 that.blur(); if(datetime){ showdatetime(); refreshTime(); } refreshDate(); bindButton(); }) }; function refreshDate(){ yearScroll.refresh(); monthScroll.refresh(); dayScroll.refresh(); resetInitDete(); yearScroll.scrollTo(0, initY*40, 100, true); monthScroll.scrollTo(0, initM*40-40, 100, true); dayScroll.scrollTo(0, initD*40-40, 100, true); } function refreshTime(){ HourScroll.refresh(); MinuteScroll.refresh(); SecondScroll.refresh(); resetInitTime(); if(initH>12){ //判断当前时间是上午还是下午 SecondScroll.scrollTo(0, initD*40-40, 100, true); //显示“下午” initH=initH-12-1; } HourScroll.scrollTo(0, initH*40, 100, true); MinuteScroll.scrollTo(0, initI*40, 100, true); if(that.val()!=''){ }else{ initH=parseInt(nowdate.getHours()); } } function resetIndex(){ indexY=1; indexM=1; indexD=1; } function resetInitDete(){ // if(opts.curdate){return false;} if(that.val()!=""){ initY = parseInt(that.val().substr(2,2)); initM = parseInt(that.val().substr(5,2)); initD = parseInt(that.val().substr(8,2)); } else if(that.val()===""){return false;} } function resetInitTime(){ // if(opts.curdate){return false;} if(that.val()!=""){ var times=new Array(); times=that.val().split(' '); var time=times[1]; var ta=new Array(); ta=String(time).split(':'); var ihour=ta[0]; var imin=ta[1] if(ihour>12){ //判断当前时间是上午还是下午 SecondScroll.scrollTo(0, initD*40-40, 100, true); //显示“下午” ihour=ihour-12-1; }else{ ihour=ihour-1; } initH = parseInt(ihour); initI = parseInt(imin); } else if(that.val()===""){return false;} } function bindButton(){ resetIndex(); $("#dateconfirm").unbind('click').click(function () { var datestr = $("#yearwrapper ul li:eq("+indexY+")").html().substr(0,$("#yearwrapper ul li:eq("+indexY+")").html().length-1)+"-"+ $("#monthwrapper ul li:eq("+indexM+")").html().substr(0,$("#monthwrapper ul li:eq("+indexM+")").html().length-1)+"-"+ $("#daywrapper ul li:eq("+Math.round(indexD)+")").html().substr(0,$("#daywrapper ul li:eq("+Math.round(indexD)+")").html().length-1); if(datetime){ if(Math.round(indexS)===1){//下午 $("#Hourwrapper ul li:eq("+indexH+")").html(parseInt($("#Hourwrapper ul li:eq("+indexH+")").html().substr(0,$("#Hourwrapper ul li:eq("+indexH+")").html().length-1))+12) }else{ $("#Hourwrapper ul li:eq("+indexH+")").html(parseInt($("#Hourwrapper ul li:eq("+indexH+")").html().substr(0,$("#Hourwrapper ul li:eq("+indexH+")").html().length-1))) } datestr+=" "+$("#Hourwrapper ul li:eq("+indexH+")").html().substr(0,$("#Minutewrapper ul li:eq("+indexH+")").html().length-1)+":"+ $("#Minutewrapper ul li:eq("+indexI+")").html().substr(0,$("#Minutewrapper ul li:eq("+indexI+")").html().length-1); indexS=0; } datestr+=':00'; //将字符串转换为日期 var begin=new Date(); var end=new Date(datestr.replace(/-/g,"/")); //js判断日期 if(begin-end>0){ createUL() global_obj.win_alert("出发时间不可晚于当前时间"); return false; } if(Ycallback===undefined){ if(docType){that.val(datestr);}else{that.html(datestr);} }else{ Ycallback(datestr); } $("#datePage").hide(); $("#dateshadow").hide(); }); $("#datecancle").click(function () { $("#datePage").hide(); $("#dateshadow").hide(); Ncallback(false); }); } function extendOptions(){ $("#datePage").show(); $("#dateshadow").show(); } //日期滑动 function init_iScrll() { var strY = $("#yearwrapper ul li:eq("+indexY+")").html().substr(0,$("#yearwrapper ul li:eq("+indexY+")").html().length-1); var strM = $("#monthwrapper ul li:eq("+indexM+")").html().substr(0,$("#monthwrapper ul li:eq("+indexM+")").html().length-1) yearScroll = new iScroll("yearwrapper",{snap:"li",vScrollbar:false, onScrollEnd:function () { indexY = (this.y/40)*(-1)+1; opts.endday = checkdays(strY,strM); $("#daywrapper ul").html(createDAY_UL()); dayScroll.refresh(); }}); monthScroll = new iScroll("monthwrapper",{snap:"li",vScrollbar:false, onScrollEnd:function (){ indexM = (this.y/40)*(-1)+1; opts.endday = checkdays(strY,strM); $("#daywrapper ul").html(createDAY_UL()); dayScroll.refresh(); }}); dayScroll = new iScroll("daywrapper",{snap:"li",vScrollbar:false, onScrollEnd:function () { indexD = (this.y/40)*(-1)+1; }}); } function showdatetime(){ init_iScroll_datetime(); addTimeStyle(); $("#datescroll_datetime").show(); $("#Hourwrapper ul").html(createHOURS_UL()); $("#Minutewrapper ul").html(createMINUTE_UL()); $("#Secondwrapper ul").html(createSECOND_UL()); } //日期+时间滑动 function init_iScroll_datetime(){ HourScroll = new iScroll("Hourwrapper",{snap:"li",vScrollbar:false, onScrollEnd:function () { indexH = Math.round((this.y/40)*(-1))+1; HourScroll.refresh(); }}) MinuteScroll = new iScroll("Minutewrapper",{snap:"li",vScrollbar:false, onScrollEnd:function () { indexI = Math.round((this.y/40)*(-1))+1; MinuteScroll.refresh(); }}) SecondScroll = new iScroll("Secondwrapper",{snap:"li",vScrollbar:false, onScrollEnd:function () { indexS = Math.round((this.y/40)*(-1)); SecondScroll.refresh(); }}) } function checkdays (year,month){ var new_year = year; //取当前的年份 var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定) if(month>12) //如果当前大于12月,则年份转到下一年 { new_month -=12; //月份减 new_year++; //年份增 } var new_date = new Date(new_year,new_month,1); //取当年当月中的第一天 return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期 } function createUL(){ CreateDateUI(); $("#yearwrapper ul").html(createYEAR_UL()); $("#monthwrapper ul").html(createMONTH_UL()); $("#daywrapper ul").html(createDAY_UL()); } function CreateDateUI(){ var str = ''+ '
'+ '
'+ '
'+ '

请选择日期

'+ '
'+ '
'+ '
'+ '
'+ '
    '+ '
    '+ '
    '+ '
      '+ '
      '+ '
      '+ '
        '+ '
        '+ '
        '+ '
        '+ '
        '+ '
          '+ '
          '+ '
          '+ '
            '+ '
            '+ '
            '+ '
              '+ '
              '+ '
              '+ '
              '+ ''+ '
              ' $("#datePlugin").html(str); } function addTimeStyle(){ $("#datePage").css("height","380px"); $("#datePage").css("top","60px"); $("#yearwrapper").css("position","absolute"); $("#yearwrapper").css("bottom","200px"); $("#monthwrapper").css("position","absolute"); $("#monthwrapper").css("bottom","200px"); $("#daywrapper").css("position","absolute"); $("#daywrapper").css("bottom","200px"); } //创建 --年-- 列表 function createYEAR_UL(){ var str="
            •  
            • "; for(var i=opts.beginyear; i<=opts.endyear;i++){ str+='
            • '+i+'年
            • ' } return str+"
            •  
            • ";; } //创建 --月-- 列表 function createMONTH_UL(){ var str="
            •  
            • "; for(var i=opts.beginmonth;i<=opts.endmonth;i++){ if(i<10){ i="0"+i } str+='
            • '+i+'月
            • ' } return str+"
            •  
            • ";; } //创建 --日-- 列表 function createDAY_UL(){ $("#daywrapper ul").html(""); var str="
            •  
            • "; for(var i=opts.beginday;i<=opts.endday;i++){ str+='
            • '+i+'日
            • ' } return str+"
            •  
            • ";; } //创建 --时-- 列表 function createHOURS_UL(){ var str="
            •  
            • "; for(var i=opts.beginhour;i<=opts.endhour;i++){ str+='
            • '+i+'时
            • ' } return str+"
            •  
            • ";; } //创建 --分-- 列表 function createMINUTE_UL(){ var str="
            •  
            • "; for(var i=opts.beginminute;i<=opts.endminute;i++){ if(i<10){ i="0"+i } str+='
            • '+i+'分
            • ' } return str+"
            •  
            • ";; } //创建 --分-- 列表 function createSECOND_UL(){ var str="
            •  
            • "; str+="
            • 上午
            • 下午
            • " return str+"
            •  
            • ";; } } })(jQuery);