My97DatePicker是很不錯的一個日期選擇插件,體積只有幾十k但是功能非常強大。官網:http://www.my97.net/
能滿足很多苛刻的要求。
WdatePicker文本框顯示當前日期-實現的結果:
1、首先引入WdatePicker.js。
2、html代碼
1 <input id="setDate" class="Wdate" name="setDate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" type="text" /></td>
3、加入一段JS代碼:
1 Date.prototype.format = function (format) { 2 var args = { 3 "M+": this.getMonth() + 1, 4 "d+": this.getDate(), 5 "h+": this.getHours(), 6 "m+": this.getMinutes(), 7 "s+": this.getSeconds(), 8 "q+": Math.floor((this.getMonth() + 3) / 3), //quarter 9 10 "S": this.getMilliseconds() 11 }; 12 if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 13 for (var i in args) { 14 var n = args[i]; 15 if (new RegExp("(" + i + ")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? n : ("00" + n).substr(("" + n).length)); 16 } 17 return format; 18 }; 19 20 $(function () { 21 $("#setDate").val(new Date().format("yyyy-MM-dd")); 22 23 });
然后就OK了。
簡單的時間限制:
1、限制只能選擇今天的日期
1 onfocus="WdatePicker({startDate:'%y',dateFmt:'yyyy-MM-dd',maxDate:'%y-%M-{%d-1}'})"
2、限制選擇今天之前的日期
1 <input id="setDate" class="Wdate" name="setDate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',maxDate:'%y-%M-%d'})" style="padding:2px 5px;margin-left:10px;" type="text" />
效果:
3、My97DatePicker兩個日期范圍不超過30天,第一個小於第二個,都不大於當前日期。
My97DatePicker 如果兩個輸入框,第一個不大於第二個,都不大於當前日期,兩個輸入框之間的時間不超過30天。做法。
如果第二個直接設置比第一個大的范圍不超過30天,那么遇到算出來的日期大於當前日期的情況,就會發生第二個輸入框可以選擇到今天之后的日期。所以要動態地修改第二個輸入范圍。
1.設置第一個不大於第二個,不大於當前日期。 最小為第二個日期減去30天。 並為其設置選中和清空時的事件(用於對第二個輸入框進行控制)
2.第二個的規則用函數表示。 設置最大值為一個全局變量。 通過第一個的兩個事件來修改這個全局變量。
效果:
html code:
1 <label>日期:</label> 2 3 <input type="text" style="width:100px;" name="date1" id="datepicker1" size="24" onfocus="WdatePicker({maxDate:'#F{$dp.$D(\'datepicker2\')||\'new Date()\'}',minDate:'#F{$dp.$D(\'datepicker2\',{d:-30})}',onpicked:pickedFunc,oncleared:clearedFunc}) " value="" /> 4 <label>-</label> 5 <input type="text" style="width:100px;" name="date2" id="datepicker2" size="24" onfocus="picker2rule(this)" value="" />
js code<動態修改第二個日期選擇窗口的函數>
1 <script type="text/javascript"> 2 var md = new Date(); //第二個輸入框最大值的全局變量 3 //第一個輸入框選擇好日期的時候操作 4 function pickedFunc() { 5 6 var Y = $dp.cal.getP('y'); //用內置方法獲取到選中的年月日 7 var M = $dp.cal.getP('M'); 8 var D = $dp.cal.getP('d'); 9 M = parseInt(M, 10) - 1; 10 D = parseInt(D, 10) + 30; //字符串的數字轉換成int再運算。並且如果超過30天,也能自動處理。 11 var d = new Date() 12 d.setFullYear(Y, M, D) //設置時間 13 var nowDate = new Date(); 14 if (nowDate <= d) { //現在的時間比較,如果算出來的值大於現在時間,修改全局變量md為現在時間。 15 md = nowDate; 16 } else { //全局變量設置為算出來的值得 17 var month = d.getMonth() + 1; //月份的范圍是(0到11); 18 md = d.getFullYear() + "-" + month + "-" + d.getDate(); //直接把d給過去會有問題,所以拼成字符串發過去 19 } 20 } 21 //第一個清空的時候的操作 22 function clearedFunc() { 23 md = new Date(); 24 } 25 //給第二個輸入框定義規則 26 function picker2rule(ele) { 27 WdatePicker({ el: ele, minDate: '#F{$dp.$D(\'datepicker1\')}', maxDate: md }) 28 } 29 </script>
========================================================================================
參數的值
1 onfocus="WdatePicker({el:'id', maxDate:'#F{$dp.$D(\'datepicker2\')||\'new Date()\'}',minDate:'#F{$dp.$D(\'datepicker2\',{d:-1800})}',onpicked:pickedFunc,oncleared:clearedFunc})
el:'id'--將WdatePicker的值傳給id的標簽;
doubleCalendar:true----顯示雙日期
加上class="Wdate"-----在選擇框右邊顯示日期圖標
#F{}-----{}自定義js代碼
skin:'whyGreen'----設置皮膚