jquery UI Datepicker時間控制項的使用方法(終結版),jquerydatepicker

來源:互聯網
上載者:User

jquery UI Datepicker時間控制項的使用方法(終結版),jquerydatepicker

近期項目中用到日期控制項,感覺不錯,寫出來分享給大家看看,我限制的開始時間和結束時間跨度不超過三天,並配置有清空時間,重選時間等功能,分享給大家:
先給大家看兩張

在例子中我控制的開始時間和結束時間為三天,也就是開始時間和結束時間的跨度不能超過三天。

具體是怎麼實現的,代碼中會附有很詳細的解釋,請大家繼續往下看:

第一步,引入控制項js,這裡有兩個,一個是jquery.js,一個是jquery-ui-datepicker.js,當然還有引入樣式檔案:

<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery-ui-datepicker.js"></script> <link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />

第二步:建立一個文本輸入框,text類型的input,我的demo中還寫入了清空時間的設定,也就是一個按鈕響應事件

<td width="35%">    <label>開始時間:</label>    <input type="text" name="start" id="start" value="${params.start}" readonly="true" title="日期範圍不能大於3天"/>    <input type="button" class="formButton" value="清空" onclick="cleaPrevInput(this);"/>    <font color="red">必選*</font>   </td>   <td width="35%">    <label>結束時間:</label>    <input type="text" name="end" id="end" value="${params.end}" readonly="true" title="日期範圍不能大於3天"/>    <input type="button" class="formButton" value="清空" onclick="cleaPrevInput(this);"/>    <font color="red">必選*</font>   </td>

裡面value的值不用管,我這是寫在項目中的代碼,value值這樣寫是為了查詢後重新整理頁面的時候時間框中依然可以有選擇的時間值的。

下面的代碼就是調用日期控制項的了,代碼如下:

$(function(){ // 擷取調用控制項的對象 var dates = $("#start,#end"); var option; //設定目標時間,因為例子中的開始時間和結束時間是有時間限制的 var targetDate; var optionEnd; var targetDateEnd; dates.datepicker({  showButtonPanel:false,  //當選擇時間的時候觸發此事件  onSelect: function(selectedDate){    if(this.id == "start"){   // 如果是選擇了開始時間   option = "minDate";   //getTimeByDateStr 這個方法的代碼下面會貼出來的,就是處理時間的代碼   var selectedTime = getTimeByDateStr(selectedDate);   var minTime = selectedTime;   targetDate = new Date(minTime);   //設定結束時間   optionEnd = "maxDate";   targetDateEnd = new Date(minTime+2*24*60*60*1000);   }else{   // 如果是選擇了結束時間   option = "maxDate";   var selectedTime = getTimeByDateStr(selectedDate);   var maxTime = selectedTime;   targetDate = new Date(maxTime);   //設定開始時間   optionEnd = "minDate";   targetDateEnd = new Date(maxTime-2*24*60*60*1000);   }   //設定時間框中時間,比如根據選擇的開始時間,限制結束時間的不可選項,dates.not(this)是js選取器使用,   //datepicker("option", option, targetDate),這個就是日期控制項封裝的api了   dates.not(this).datepicker("option", option, targetDate);    dates.not(this).datepicker("option", optionEnd, targetDateEnd);   } });});

下面先把上面代碼中getTimeByDateStr(XXX) 方法的代碼貼出來,大家看的方便,這個代碼很簡單,相信大家一看便懂:

//根據日期文字取得其時間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();}

代碼到現在就可以實現日期控制項的使用,並且開始時間和結束時間限制在三天以內,比如你選擇了開始時間為2014-03-27,那麼結束時間只有27,28,29三天可選,其餘日期不可點擊,如果你選擇了結束時間為28,那麼,現在開始時間就只能選擇28,27,26了,就這樣。

第三步:大家看清空按鈕,清空按鈕是清空時間選擇框中的值,這個實現起來很簡單了:

//清空日曆控制項function cleaPrevInput(objs){ //清空輸入框中的值,但是僅僅是清空了值而已,時間控制項的選值限制還在的 $(objs).prev().val(""); //如果開始時間和結束時間都清空了,這時應該是你選擇的那個框中是沒有時間限制的,也就是說可以隨便選擇日期 if($('#start').val()=="" && $('#end').val()==""){ var dates = $("#start,#end"); //調用datepicker封裝的api,使剛剛設定的開始時間和結束時間為空白,這樣就可以選擇任意日期了 dates.datepicker("option", "minDate", null); dates.datepicker("option", "maxDate", null); }}

現在就可以使用了,如果只是使用控制項,不需要設定時間限制就非常簡單了,上面代碼可以供多數日期選擇方面的需求使用了,但是如果有特殊的話,還需自己去查api吧,當時我單單為了清空日期控制項中的值,就是這句代碼:dates.datepicker("option", "maxDate", null),就查了半天的api,還是需要大家有足夠的耐心。

以上就是關於jquery UI Datepicker時間控制項的全部內容介紹,暫時畫上了一個句號,以後再有相關文章,一定第一時間與大家分享。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.