Jquery ui datepicker設(shè)置日期范圍,如只能隔3天(實(shí)現(xiàn)代碼)

字號(hào):


    下面小編就為大家?guī)?lái)一篇Jquery ui datepicker 設(shè)置日期范圍,如只能隔3天【實(shí)現(xiàn)代碼】。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考
    最近的后臺(tái)項(xiàng)目前端使用了jquery ui 日歷控件自然就使用了jquery ui 的 datepicker
    后臺(tái)數(shù)據(jù)比較好大,一般是千萬(wàn)級(jí)的和百萬(wàn)級(jí)的關(guān)聯(lián),查詢(xún)會(huì)很慢,所以后加想多加些過(guò)濾條件,其中時(shí)間要設(shè)置為必選,
    產(chǎn)品要叫日歷控件做成只能做3天之內(nèi)的查詢(xún),且日歷控件要做成這樣的要求,如果前一個(gè)日歷控制選擇了2013年9月1號(hào)
    后面的日歷控件只能選擇2013年9月1號(hào),2013年9月2號(hào),2013年9月3號(hào),其他的全部要不能選,本來(lái)想叫他給提示的,領(lǐng)導(dǎo)非要這么干
    真是領(lǐng)導(dǎo)一句話,碼工辛苦好幾年啊。。。好吧還好jquery ui 的日歷控件提供了這個(gè)功能,很強(qiáng)大
    首先去官網(wǎng)上(http://jqueryui.com/download/#!version=1.9.2)下載jquery ui 包 我用的是1.92版本
    下載好了之后
    引入:
    <link href="jquery-ui/1.9.2/css/smoothness/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="jquery-ui/1.9.2/js/jquery-ui-1.9.2.custom.js"></script>
    <script type="text/javascript" src="jquery-ui/1.9.2/datepicker-init.js"></script>
    <script type="text/javascript"> 
    $(function(){
     var dates = $("#startDate,#endDate");
     var option;
     var targetDate;
     var optionEnd;
     var targetDateEnd;
     dates.datepicker({
      showButtonPanel:false,
      onSelect: function(selectedDate){ 
       if(this.id == "startDate"){
       // 如果是選擇了開(kāi)始時(shí)間(startDate)設(shè)置結(jié)束時(shí)間(endDate)的最小時(shí)間和最大時(shí)間
       option = "minDate"; //最小時(shí)間
       var selectedTime = getTimeByDateStr(selectedDate);
       var minTime = selectedTime;
         //最小時(shí)間 為開(kāi)第一個(gè)日歷控制選擇的時(shí)間
       targetDate = new Date(minTime); 
       //設(shè)置結(jié)束時(shí)間的最大時(shí)間
       optionEnd = "maxDate";
         //因?yàn)橹荒茏鋈靸?nèi)的查詢(xún) 所以是間隔2天 當(dāng)前時(shí)間加上2*24*60*60*1000
       targetDateEnd = new Date(minTime+2*24*60*60*1000);
       }else{
       // 如果是選擇了結(jié)束時(shí)間(endDate)設(shè)置開(kāi)始時(shí)間(startDate)的最小時(shí)間和最大時(shí)間
       option = "maxDate"; //最大時(shí)間
       var selectedTime = getTimeByDateStr(selectedDate);
       var maxTime = selectedTime;
       targetDate = new Date(maxTime);
       //設(shè)置最小時(shí)間 
       optionEnd = "minDate";
       targetDateEnd = new Date(maxTime-2*24*60*60*1000);
       }
       dates.not(this).datepicker("option", option, targetDate); 
       dates.not(this).datepicker("option", optionEnd, targetDateEnd); 
      }
     });
    // 檢查起始時(shí)間不能超過(guò)3天
    function checkTimeInOneMonth(startDate, endDate){
        var startTime = getTimeByDateStr(startDate);
     var endTime = getTimeByDateStr(endDate);
     if((endTime - startTime) > 2*24*60*60*1000){
      return false;
     }
     return true;
    }
    //根據(jù)日期字符串取得其時(shí)間
    function getTimeByDateStr(dateStr){
     var year = parseInt(dateStr.substring(0,4));
     var month = parseInt(dateStr.substring(5,7),10)-1;
     var day = parseInt(dateStr.substring(8,10),10);
     return new Date(year, month, day).getTime();
    }
    </script> <input type="text" value="" name="startDate" readonly="true" id="startDate"/><input type="text" value="" name="endDate" readonly="true" id="endDate"/>
    以上這篇Jquery ui datepicker設(shè)置日期范圍,如只能隔3天【實(shí)現(xiàn)代碼】就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考