jquery UI Datepicker時(shí)間控件的使用方法(終結(jié)版)
近期項(xiàng)目中用到日期控件,感覺(jué)不錯(cuò),寫(xiě)出來(lái)分享給大家看看,我限制的開(kāi)始時(shí)間和結(jié)束時(shí)間跨度不超過(guò)三天,并配置有清空時(shí)間,重選時(shí)間等功能,分享給大家:
先給大家看兩張效果圖


在例子中我控制的開(kāi)始時(shí)間和結(jié)束時(shí)間為三天,也就是開(kāi)始時(shí)間和結(jié)束時(shí)間的跨度不能超過(guò)三天。
具體是怎么實(shí)現(xiàn)的,代碼中會(huì)附有很詳細(xì)的解釋,請(qǐng)大家繼續(xù)往下看:
第一步,引入控件js,這里有兩個(gè),一個(gè)是jquery.js,一個(gè)是jquery-ui-datepicker.js,當(dāng)然還有引入樣式文件:
<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" />
第二步:創(chuàng)建一個(gè)文本輸入框,text類型的input,我的demo中還寫(xiě)入了清空時(shí)間的設(shè)置,也就是一個(gè)按鈕響應(yīng)事件
<td width="35%">
<label>開(kāi)始時(shí)間:</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>結(jié)束時(shí)間:</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的值不用管,我這是寫(xiě)在項(xiàng)目中的代碼,value值這樣寫(xiě)是為了查詢后刷新頁(yè)面的時(shí)候時(shí)間框中依然可以有選擇的時(shí)間值的。
下面的代碼就是調(diào)用日期控件的了,代碼如下:
$(function(){
// 獲取調(diào)用控件的對(duì)象
var dates = $("#start,#end");
var option;
//設(shè)置目標(biāo)時(shí)間,因?yàn)槔又械拈_(kāi)始時(shí)間和結(jié)束時(shí)間是有時(shí)間限制的
var targetDate;
var optionEnd;
var targetDateEnd;
dates.datepicker({
showButtonPanel:false,
//當(dāng)選擇時(shí)間的時(shí)候觸發(fā)此事件
onSelect: function(selectedDate){
if(this.id == "start"){
// 如果是選擇了開(kāi)始時(shí)間
option = "minDate";
//getTimeByDateStr 這個(gè)方法的代碼下面會(huì)貼出來(lái)的,就是處理時(shí)間的代碼
var selectedTime = getTimeByDateStr(selectedDate);
var minTime = selectedTime;
targetDate = new Date(minTime);
//設(shè)置結(jié)束時(shí)間
optionEnd = "maxDate";
targetDateEnd = new Date(minTime+2*24*60*60*1000);
}else{
// 如果是選擇了結(jié)束時(shí)間
option = "maxDate";
var selectedTime = getTimeByDateStr(selectedDate);
var maxTime = selectedTime;
targetDate = new Date(maxTime);
//設(shè)置開(kāi)始時(shí)間
optionEnd = "minDate";
targetDateEnd = new Date(maxTime-2*24*60*60*1000);
}
//設(shè)置時(shí)間框中時(shí)間,比如根據(jù)選擇的開(kāi)始時(shí)間,限制結(jié)束時(shí)間的不可選項(xiàng),dates.not(this)是js選擇器使用,
//datepicker("option", option, targetDate),這個(gè)就是日期控件封裝的api了
dates.not(this).datepicker("option", option, targetDate);
dates.not(this).datepicker("option", optionEnd, targetDateEnd);
}
});
});
下面先把上面代碼中g(shù)etTimeByDateStr(XXX) 方法的代碼貼出來(lái),大家看的方便,這個(gè)代碼很簡(jiǎn)單,相信大家一看便懂:
//根據(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();
}
代碼到現(xiàn)在就可以實(shí)現(xiàn)日期控件的使用,并且開(kāi)始時(shí)間和結(jié)束時(shí)間限制在三天以內(nèi),比如你選擇了開(kāi)始時(shí)間為2014-03-27,那么結(jié)束時(shí)間只有27,28,29三天可選,其余日期不可點(diǎn)擊,如果你選擇了結(jié)束時(shí)間為28,那么,現(xiàn)在開(kāi)始時(shí)間就只能選擇28,27,26了,就這樣。
第三步:大家看清空按鈕,清空按鈕是清空時(shí)間選擇框中的值,這個(gè)實(shí)現(xiàn)起來(lái)很簡(jiǎn)單了:
//清空日歷控件
function cleaPrevInput(objs){
//清空輸入框中的值,但是僅僅是清空了值而已,時(shí)間控件的選值限制還在的
$(objs).prev().val("");
//如果開(kāi)始時(shí)間和結(jié)束時(shí)間都清空了,這時(shí)應(yīng)該是你選擇的那個(gè)框中是沒(méi)有時(shí)間限制的,也就是說(shuō)可以隨便選擇日期
if($('#start').val()=="" && $('#end').val()==""){
var dates = $("#start,#end");
//調(diào)用datepicker封裝的api,使剛剛設(shè)置的開(kāi)始時(shí)間和結(jié)束時(shí)間為空,這樣就可以選擇任意日期了
dates.datepicker("option", "minDate", null);
dates.datepicker("option", "maxDate", null);
}
}
現(xiàn)在就可以使用了,如果只是使用控件,不需要設(shè)置時(shí)間限制就非常簡(jiǎn)單了,上面代碼可以供多數(shù)日期選擇方面的需求使用了,但是如果有特殊的話,還需自己去查api吧,當(dāng)時(shí)我單單為了清空日期控件中的值,就是這句代碼:dates.datepicker("option", "maxDate", null),就查了半天的api,還是需要大家有足夠的耐心。
以上就是關(guān)于jquery UI Datepicker時(shí)間控件的全部?jī)?nèi)容介紹,暫時(shí)畫(huà)上了一個(gè)句號(hào),以后再有相關(guān)文章,一定第一時(shí)間與大家分享。
- JQuery datepicker 使用方法
- datePicker——日期選擇控件(with jquery)
- jQuery ui 利用 datepicker插件實(shí)現(xiàn)開(kāi)始日期(minDate)和結(jié)束日期(maxDate)
- jquery datepicker參數(shù)介紹和示例
- jQueryUI中的datepicker使用方法詳解
- jquery UI Datepicker時(shí)間控件的使用方法(加強(qiáng)版)
- JQuery datepicker 用法詳解
- 設(shè)置jQueryUI DatePicker默認(rèn)語(yǔ)言為中文
- JQuery日期插件datepicker的使用方法
- jQuery dateRangePicker插件使用方法詳解
相關(guān)文章
jQuery實(shí)現(xiàn)的給圖片點(diǎn)贊+1動(dòng)畫(huà)效果(附在線演示及demo源碼下載)
這篇文章主要介紹了jQuery實(shí)現(xiàn)的給圖片點(diǎn)贊+1動(dòng)畫(huà)效果,并附帶在線演示及demo源碼下載,涉及jQuery鼠標(biāo)事件響應(yīng)及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)技巧,需要的朋友可以參考下2015-12-12
jquery 鼠標(biāo)滑動(dòng)顯示詳情應(yīng)用示例
本文示例要為大家實(shí)現(xiàn)的效果是鼠標(biāo)滑動(dòng),顯示詳情,代碼很簡(jiǎn)潔,很適合學(xué)習(xí)2014-01-01
利用jQuery簡(jiǎn)單實(shí)現(xiàn)產(chǎn)品展示圖片左右滾動(dòng)功能(示例代碼)
本篇文章主要是對(duì)利用jQuery簡(jiǎn)單實(shí)現(xiàn)產(chǎn)品展示圖片左右滾動(dòng)功能的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01
jquery實(shí)現(xiàn)翻動(dòng)fadeIn顯示的方法
這篇文章主要介紹了jquery實(shí)現(xiàn)翻動(dòng)fadeIn顯示的方法,實(shí)例分析了jQuery中fadeIn方法的使用技巧,需要的朋友可以參考下2015-03-03
IE中jquery.form中ajax提交沒(méi)反應(yīng)解決方法分享
用jquery form插件,進(jìn)行ajax提交,本來(lái)可以用,好好地,突然發(fā)現(xiàn),firefox,opera等可以提交,ie的success函數(shù)運(yùn)行了2012-09-09
jquery 屏蔽一個(gè)區(qū)域內(nèi)的所有元素,禁止輸入
有時(shí)候,需要屏蔽一個(gè)div中所有的input類型,使用jquery很簡(jiǎn)單有效的完成。2009-10-10
JQuery 設(shè)置checkbox值二次無(wú)效的解決方法
下面小編就為大家?guī)?lái)一篇JQuery 設(shè)置checkbox值二次無(wú)效的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
ashx文件獲取$.ajax()方法發(fā)送的數(shù)據(jù)
這篇文章主要介紹了ashx文件獲取$.ajax()方法發(fā)送的數(shù)據(jù)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05
jQuery實(shí)現(xiàn)的簡(jiǎn)單折疊菜單(折疊面板)效果代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)的簡(jiǎn)單折疊菜單(折疊面板)效果代碼,涉及jQuery中slideToggle與toggleClass方法的靈活使用技巧,需要的朋友可以參考下2015-09-09
jQuery實(shí)現(xiàn)的調(diào)整表格行tr上下順序
表格元素是大家比較常用的元素,有時(shí)候表格中的行需要調(diào)整順序,下面通過(guò)代碼實(shí)例介紹一下如何利用jquery實(shí)現(xiàn)此功能2016-01-01

