在日常的網頁開發過程中,日期組件已經成爲不可或缺的組件之一。同時,隨着廣大傑出攻城獅的不懈努力,也出現了很多優秀的日期組件,其中我個人覺得 layDate 日期組件是一個非常不錯的組件,簡潔易用,樣式清爽。
此文主要以賢心所作的 layDate 組件進行日期選擇的演示,敬請各位小主們參閱,若有不足之處,敬請大神指正,不勝感激!
閒不多言,直接上碼。
演示文檔的工程目錄如下圖所示:
laydate-demo.html 對應的源代碼爲:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>laydate 日期插件演示示例</title> 6 7 <script type="text/javascript" src="laydate/laydate.js"></script> 8 <script type="text/javascript" src="js/dateUtil.js"></script> 9 <link rel="stylesheet" type="text/css" href="css/page.css" /> 10 </head> 11 12 <body> 13 <div class="box"> 14 <h3>laydate API:</h3> 15 <pre> 16 一、核心方法:laydate(options); 17 options是一個對象,它包含了以下key: '默認值' 18 elem: '#id', // 日期顯示元素選擇器,laydate.js封裝了一個輕量級的選擇器引擎,因此elem還允許你傳入class、tag但必須按照這種方式 '#id .class' 19 event: 'click', // 觸發事件。如果沒有傳入event,則按照默認的click 20 format: 'YYYY-MM-DD hh:mm:ss', // 日期格式 21 istime: false, // 是否開啓時間選擇 22 isclear: true, // 是否顯示清空 23 istoday: true, // 是否顯示今天 24 issure: true, // 是否顯示確認 25 festival: true, // 是否顯示節日 26 min: '1900-01-01 00:00:00', // 最小日期 27 max: '2099-12-31 23:59:59', // 最大日期 28 start: '2014-6-15 23:00:00', // 開始日期 29 fixed: false, // 是否固定在可視區域 30 zIndex: 99999999, // css z-index 31 choose: function(dates){ // 選擇好日期的回調 32 } 33 34 二、其它方法/屬性 35 36 laydate.v // 獲取laydate版本號 37 laydate.skin(lib); // 加載皮膚,參數lib爲皮膚名 38 39 /* 40 layer.now支持多類型參數。timestamp可以是前後若干天,也可以是一個時間戳。format爲日期格式,爲空時則採用默認的“-”分割。 41 如laydate.now(-2)將返回前天,laydate.now(3999634079890)將返回2096-09-28 42 */ 43 layer.now(timestamp, format); // 該方法提供了豐富的功能,推薦靈活使用。 44 45 laydate.reset(); // 重設日曆控件座標,一般用於頁面dom結構改變時。無參 46 </pre> 47 </div> 48 49 <div class="box"> 50 <h3>演示一:直接調用 laydate,無參調用</h3> 51 52 <input placeholder="請輸入日期" class="laydate-icon" onclick="laydate()"> 53 </div> 54 55 <div class="box"> 56 <h3>演示二:js外部調用</h3> 57 58 <input class="laydate-icon" id="demo" value="2014-07-18"> 59 </div> 60 61 <div class="box"> 62 <h3>演示三:圖標觸發日期</h3> 63 64 <input id="ico" readonly><span class="laydate-icon" onclick="laydate({elem: '#ico'});"></span> 65 </div> 66 67 <div class="box"> 68 <h3>演示四:自定義日期格式</h3> 69 70 <input id="custom_date_format" class="laydate-icon"></input> 71 </div> 72 73 <div class="box"> 74 <h3>演示五:基於當前日期控制日期範圍</h3> 75 76 <input id="custom_date_scope" class="laydate-icon"></input> 77 </div> 78 79 <div class="box"> 80 <h3>演示六:顯示日期和時間</h3> 81 82 <input id="custom_date_full" class="laydate-icon"></input> 83 </div> 84 85 <div class="box"> 86 <h3>演示七:雙日期範圍顯示限制</h3> 87 88 有效時間:<input id="time_start" class="laydate-icon"></input> --- <input id="time_end" class="laydate-icon"></input> 89 </div> 90 91 <div class="box" style="text-align:center"> 92 <p> 93 以上,就是我基於賢心所作日期插件 layDate 進行的日期組件演示。<br> 94 個人覺得,其是一款非常不錯的日期插件,對其皮膚樣式,我個人比較傾向選擇 淡藍 的樣式,簡潔明快。<br> 95 以下爲相應的參考鏈接以及 layDate 插件下載的目錄(內含所需的皮膚)。 96 </p> 97 <a href="http://www.w3school.com.cn/jsref/jsref_obj_date.asp" target="_blank">JavaScript Date 對象</a> 98 <a href="http://yunpan.cn/ccMrbLZbZgMQC" target="_blank">layDate 插件(提取碼:a36a)</a> 99 </div> 100 101 <script> 102 ;!function(){ 103 laydate.skin('danlan'); 104 105 // 演示二:js外部調用 106 laydate({ 107 elem: '#demo' 108 }) 109 }(); 110 111 /* 112 * 演示四:自定義日期格式 113 */ 114 laydate({ 115 elem: '#custom_date_format', 116 format: 'YYYY-MM', // 分隔符可以任意定義,該例子表示只顯示年月 117 festival: true, // 顯示節日 118 119 choose: function(datas){ // 選擇日期完畢的回調 120 alert('您選擇的日期爲:'+datas); 121 } 122 }); 123 124 /* 125 * 演示五:基於當前日期控制日期範圍 126 */ 127 laydate({ 128 elem: '#custom_date_scope', 129 min: laydate.now(-7), // -1代表昨天,-2代表前天,以此類推 130 max: laydate.now(+7) // +1代表明天,+2代表後天,以此類推 131 }); 132 133 /* 134 * 演示六:顯示日期和時間 135 */ 136 laydate({ 137 elem: '#custom_date_full', 138 format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定義,該例子表示只顯示年月 139 festival: true, // 顯示節日 140 istime: true, 141 142 choose: function(dates){ // 選擇日期完畢的回調 143 alert('您選擇的日期時間爲:'+dates); 144 } 145 }); 146 147 /* 148 * 演示七:雙日期範圍顯示限制 149 */ 150 var start_time = { 151 elem: '#time_start', 152 format: 'YYYY-MM-DD hh:mm:ss', 153 min: laydate.now(), // 設定最小日期爲當前日期 154 //max: laydate.now(+5), // 最大日期 155 istime: true, 156 istoday: false, 157 158 choose: function(dates){ 159 var cur = convertString2Date(dates); 160 var str = convertDate2String(cur); 161 var mse = adjustDate(cur, 0); 162 var ad = convertDate2String(mse); 163 164 alert("當前日期:" + cur + "\n\n格式日期:" + str + "\n\n毫秒總數:" + mse + "\n\n調整日期:" + mse 165 + "\n\n加 1 秒:" + convertDate2String(adjustDate(cur, 1)) 166 + "\n\n加 1 分:" + convertDate2String(adjustDate(cur, 60)) 167 + "\n\n加 1 時:" + convertDate2String(adjustDate(cur, 60*60)) 168 + "\n\n加 1 天:" + convertDate2String(adjustDate(cur, 60*60*24)) 169 + "\n\n加 1 月:" + convertDate2String(adjustDate(cur, 60*60*24*30)) 170 + "\n\n加 1 年:" + convertDate2String(adjustDate(cur, 60*60*24*30*12)) 171 + "\n\n減 1 秒:" + convertDate2String(adjustDate(cur, -1)) 172 + "\n\n減 1 分:" + convertDate2String(adjustDate(cur, -60)) 173 + "\n\n減 1 時:" + convertDate2String(adjustDate(cur, -60*60)) 174 + "\n\n減 1 天:" + convertDate2String(adjustDate(cur, -60*60*24)) 175 + "\n\n減 1 月:" + convertDate2String(adjustDate(cur, -60*60*24*30)) 176 + "\n\n減 1 年:" + convertDate2String(adjustDate(cur, -60*60*24*30*12))); 177 178 // 開始日選好後,重置結束日的最小日期爲下一天 179 end_time.min = convertDate2String(adjustDate(cur, 60*60*24)); 180 // 將結束日的初始值設定爲開始日的第三天 181 end_time.start = convertDate2String(adjustDate(cur, 60*60*24*2)); 182 // 將結束日的終止值設定爲開始日的第三十天,日期範圍爲一個月 183 end_time.max = convertDate2String(adjustDate(cur, 60*60*24*30)); 184 } 185 }; 186 187 var end_time = { 188 elem: '#time_end', 189 format: 'YYYY-MM-DD hh:mm:ss', 190 min: laydate.now(), 191 max: '2099-06-16 23:59:59', 192 istime: true, 193 istoday: false, 194 195 choose: function(dates){ 196 var cur = convertString2Date(dates); 197 198 // 結束日選好後,重置開始日的最大日期爲前第一天 199 start_time.max = convertDate2String(adjustDate(cur, -60*60*24)); 200 // 將起始日的初始值設定爲結束日的前第三十天 201 start_time.start = convertDate2String(adjustDate(cur, -60*60*24*30)); 202 // 將起始日的起始日期設定爲結束日的前第三十天,日期範圍爲一個月 203 start_time.min = convertDate2String(adjustDate(cur, -60*60*24*30)); 204 } 205 }; 206 207 laydate(start_time); 208 laydate(end_time); 209 </script> 210 </body> 211 </html>
page.css 對應的源碼爲:
1 *{ 2 margin:0; 3 padding:0; 4 list-style:none; 5 } 6 7 html{ 8 background-color:#E3E3E3; 9 font-size:14px; 10 color:#000; 11 font-family:'微軟雅黑' 12 } 13 14 h2{ 15 line-height:30px; 16 font-size:20px; 17 } 18 19 a,a:hover{ 20 text-decoration:none; 21 } 22 23 pre{ 24 font-family:'微軟雅黑' 25 } 26 27 .box{ 28 width:1200px; 29 padding:10px 20px; 30 background-color:#fff; 31 margin:10px auto; 32 } 33 34 .box a{ 35 padding-right:20px; 36 } 37 38 h3{ 39 margin:10px 0; 40 } 41 42 .layinput{ 43 height: 22px; 44 line-height: 22px; 45 width: 150px; 46 margin: 0; 47 }
convertString2Date 函數對應的源碼如下:
convertDate2String 函數對應的源碼如下:
adjustDate 函數對應的源碼如下:
運行結果如下所示:
至此, HTML-001-日期組件 layDate 演示 順利完結,希望此文能夠給初學 HTML 的您一份參考。
最後,非常感謝親的駐足,希望此文能對親有所幫助。熱烈歡迎親一起探討,共同進步。非常感謝! ^_^
PS:若有錯誤,敬請告知,不勝感激!
Copyright @範豐平 版權所有,如需轉載請標明本文原始鏈接出處,嚴禁商業用途! 我的個人博客鏈接地址:http://www.cnblogs.com/fengpingfan