jQuery ui 利用 datepicker插件實現開始日期(minDate)和結束日期(maxDate)

使用jQuery ui首先需要引入jQuery類庫,jQuery ui js腳本和jQuery ui css樣式表。代碼示例如下:

 

. 代碼如下:

<script src="js/jquery-1.7.1.js"></script>  
<script src="js/jquery-ui-1.8.18.custom.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/smoothness/jquery-ui-1.8.18.custom.css">

 

註:引入js腳本時,需先引入jQuery類庫,後引入jQuery ui 腳本

下面為兩種實現步驟:

思路一:

第一步  實現兩個datepicker組件。

  需要定義兩個input標簽,類型為text,並指定id屬性

HTML代碼如下

 

. 代碼如下:

開始日期:<input type="text" id="start">
結束日期:<input type="text" id="end">

 

在js代碼中得到兩個input元素的jQuery對象,並將其轉化為datepicker組件

Js代碼如下

 

. 代碼如下:

    $(document).ready(function(){ 
        $("#start").datepicker(); 
        $("#end").datepicker(); 
    }); 

 

實現以上操作後,在頁面中點擊文本框,如果出現datepicker則代表成功。

第二步  設置開始和結束日期

  當選擇開始日期的值後,則結束日期的最小值應該就是開始日期;同理,當選擇結束日期後,開始日期的最大值則應該是結束日期。我們可以利用datepicker中的onSelect屬性來設置當選擇指定日期後觸發的事件,通過該事件來指定對應的datepicker最小日期或最大日期。

Js代碼如下

 

. 代碼如下:

$("#start").datepicker({
    onSelect:function(dateText,inst){
       $("#end").datepicker("option","minDate",dateText);
    }
});
$("#end").datepicker({
    onSelect:function(dateText,inst){
        $("#start").datepicker("option","maxDate",dateText);
    }
});

 

註:匿名函數中的dateText屬性為當前選擇日期的字符串

思路二:

第一步  同時獲得兩個文本框對象,並將其轉換為datepicker(利用jQuery的選擇器)

HTML代碼如下

 

. 代碼如下:

開始日期:<input type="text" id="start">
結束日期:<input type="text" id="end">

 

Js代碼如下

 

. 代碼如下:

var dates = $("#start,#end");
dates.datepicker();

 

第二步  同樣在選擇日期後,觸發onSelect事件,調用函數傳遞selectedDate參數,

函數體中首先判斷觸發事件的是開始日期還是結束日期,通過該判斷來指定設置minDate或者是maxDate,然後利用not()函數,來反向選擇另一個datepicker對象,並設置其對應的屬性。

Js代碼如下

 

. 代碼如下:

dates.datepicker({
    onSelect: function(selectedDate){
       var option = this.id == "start" ? "minDate" : "maxDate";
       dates.not(this).datepicker("option", option, selectedDate);
    }
});

 

這樣在設置一方後,另一方就會被限制瞭。

實現的效果如圖:

發佈留言