天天看點

layDate日期選擇插件

在日常的網頁開發過程中,日期元件已經成為不可或缺的元件之一。同時,随着廣大傑出攻城獅的不懈努力,也出現了很多優秀的日期元件,其中我個人覺得 layDate 日期元件是一個非常不錯的元件,簡潔易用,樣式清爽。

此文主要以 layDate 元件進行日期選擇的示範,敬請各位小主們參閱,若有不足之處,敬請大神指正,不勝感激!

閑不多言,直接上碼。

示範文檔的工程目錄如下圖所示:

layDate日期選擇插件

laydate-demo.html 對應的源代碼為:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>laydate 日期插件示範示例</title>

 <script type="text/javascript" src="laydate/laydate.js"></script>
 <script type="text/javascript" src="js/dateUtil.js"></script>
 <link rel="stylesheet" type="text/css" href="css/page.css" target="_blank" rel="external nofollow"  />
 </head>

 <body>
 <div class="box">
  <h3>laydate API:</h3>
  <pre>
  一、核心方法:laydate(options);
  options是一個對象,它包含了以下key: '預設值'
   elem: '#id',   // 日期顯示元素選擇器,laydate.js封裝了一個輕量級的選擇器引擎,是以elem還允許你傳入class、tag但必須按照這種方式 '#id .class'
   event: 'click',   // 觸發事件。如果沒有傳入event,則按照預設的click
   format: 'YYYY-MM-DD hh:mm:ss', // 日期格式
   istime: false,   // 是否開啟時間選擇
   isclear: true,   // 是否顯示清空
   istoday: true,   // 是否顯示今天
   issure: true,   // 是否顯示确認
   festival: true,   // 是否顯示節日
   min: '1900-01-01 00:00:00',  // 最小日期
   max: '2099-12-31 23:59:59', // 最大日期
   start: '2014-6-15 23:00:00',  // 開始日期
   fixed: false,   // 是否固定在可視區域
   zIndex: 99999999,  // css z-index
   choose: function(dates){  // 選擇好日期的回調
  }
  
  二、其它方法/屬性

  laydate.v  // 擷取laydate版本号
  laydate.skin(lib); // 加載皮膚,參數lib為皮膚名 
  
  /*
   layer.now支援多類型參數。timestamp可以是前後若幹天,也可以是一個時間戳。format為日期格式,為空時則采用預設的“-”分割。
   如laydate.now(-2)将傳回前天,laydate.now(3999634079890)将傳回2096-09-28
  */
  layer.now(timestamp, format); // 該方法提供了豐富的功能,推薦靈活使用。
  
  laydate.reset();  // 重設月曆控件坐标,一般用于頁面dom結構改變時。無參
 </pre>
 </div>

 <div class="box">
  <h3>示範一:直接調用 laydate,無參調用</h3>

  <input placeholder="請輸入日期" class="laydate-icon" οnclick="laydate()">
 </div>

 <div class="box">
  <h3>示範二:js外部調用</h3>
  
  <input class="laydate-icon" id="demo" value="2014-07-18">
 </div>

 <div class="box">
  <h3>示範三:圖示觸發日期</h3>

  <input id="ico" readonly><span class="laydate-icon" οnclick="laydate({elem: '#ico'});"></span>
 </div>

 <div class="box">
  <h3>示範四:自定義日期格式</h3>
  
  <input id="custom_date_format" class="laydate-icon"></input>
 </div>

 <div class="box">
  <h3>示範五:基于目前日期控制日期範圍</h3>
  
  <input id="custom_date_scope" class="laydate-icon"></input>
 </div>

 <div class="box">
  <h3>示範六:顯示日期和時間</h3>
  
  <input id="custom_date_full" class="laydate-icon"></input>
 </div>

 <div class="box">
  <h3>示範七:雙日期範圍顯示限制</h3>
  
  有效時間:<input id="time_start" class="laydate-icon"></input> --- <input id="time_end" class="laydate-icon"></input>
 </div>

 <div class="box" style="text-align:center">
  <p>
  以上,就是基于 layDate 進行的日期元件示範。<br>
  個人覺得,其是一款非常不錯的日期插件,對其皮膚樣式,我個人比較傾向選擇 淡藍 的樣式,簡潔明快。<br>
  以下為相應的參考連結以及 layDate 插件下載下傳的目錄(内含所需的皮膚)。
  </p>
  <a href="http://www.w3school.com.cn/jsref/jsref_obj_date.asp" target="_blank" rel="external nofollow"  target="_blank">JavaScript Date 對象</a>
  <a href="http://yunpan.cn/ccMrbLZbZgMQC" target="_blank" rel="external nofollow"  target="_blank">layDate 插件(提取碼:a36a)</a>
 </div>

 <script>
  ;!function(){
  laydate.skin('danlan');

  // 示範二:js外部調用
  laydate({
   elem: '#demo'
  })
  }();

  /*
  * 示範四:自定義日期格式
  */
  laydate({
  elem: '#custom_date_format',
  format: 'YYYY-MM', // 分隔符可以任意定義,該例子表示隻顯示年月
  festival: true, // 顯示節日

  choose: function(datas){ // 選擇日期完畢的回調
   alert('您選擇的日期為:'+datas);
  }
  });

  /*
  * 示範五:基于目前日期控制日期範圍
  */
  laydate({
  elem: '#custom_date_scope',
  min: laydate.now(-7), // -1代表昨天,-2代表前天,以此類推
  max: laydate.now(+7) // +1代表明天,+2代表後天,以此類推
  });

  /*
  * 示範六:顯示日期和時間
  */
  laydate({
  elem: '#custom_date_full',
  format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定義,該例子表示隻顯示年月
  festival: true,  // 顯示節日
  istime: true,

  choose: function(dates){ // 選擇日期完畢的回調
   alert('您選擇的日期時間為:'+dates);
  }
  });

  /*
  * 示範七:雙日期範圍顯示限制
  */
  var start_time = {
  elem: '#time_start',
  format: 'YYYY-MM-DD hh:mm:ss',
  min: laydate.now(),  // 設定最小日期為目前日期
  //max: laydate.now(+5), // 最大日期
  istime: true,
  istoday: false,

  choose: function(dates){
   var cur = convertString2Date(dates);
   var str = convertDate2String(cur);
   var mse = adjustDate(cur, 0);
   var ad = convertDate2String(mse);

   alert("目前日期:" + cur + "\n\n格式日期:" + str + "\n\n毫秒總數:" + mse + "\n\n調整日期:" + mse
    + "\n\n加 1 秒:" + convertDate2String(adjustDate(cur, 1))
    + "\n\n加 1 分:" + convertDate2String(adjustDate(cur, 60))
    + "\n\n加 1 時:" + convertDate2String(adjustDate(cur, 60*60))
    + "\n\n加 1 天:" + convertDate2String(adjustDate(cur, 60*60*24))
    + "\n\n加 1 月:" + convertDate2String(adjustDate(cur, 60*60*24*30))
    + "\n\n加 1 年:" + convertDate2String(adjustDate(cur, 60*60*24*30*12))
    + "\n\n減 1 秒:" + convertDate2String(adjustDate(cur, -1))
    + "\n\n減 1 分:" + convertDate2String(adjustDate(cur, -60))
    + "\n\n減 1 時:" + convertDate2String(adjustDate(cur, -60*60))
    + "\n\n減 1 天:" + convertDate2String(adjustDate(cur, -60*60*24))
    + "\n\n減 1 月:" + convertDate2String(adjustDate(cur, -60*60*24*30))
    + "\n\n減 1 年:" + convertDate2String(adjustDate(cur, -60*60*24*30*12)));

   // 開始日選好後,重置結束日的最小日期為下一天
   end_time.min = convertDate2String(adjustDate(cur, 60*60*24));
   // 将結束日的初始值設定為開始日的第三天
   end_time.start = convertDate2String(adjustDate(cur, 60*60*24*2));
   // 将結束日的終止值設定為開始日的第三十天,日期範圍為一個月
   end_time.max = convertDate2String(adjustDate(cur, 60*60*24*30));
  }
  };

  var end_time = {
  elem: '#time_end',
  format: 'YYYY-MM-DD hh:mm:ss',
  min: laydate.now(),
  max: '2099-06-16 23:59:59',
  istime: true,
  istoday: false,

  choose: function(dates){
   var cur = convertString2Date(dates);

   // 結束日選好後,重置開始日的最大日期為前第一天
   start_time.max = convertDate2String(adjustDate(cur, -60*60*24));
   // 将起始日的初始值設定為結束日的前第三十天
   start_time.start = convertDate2String(adjustDate(cur, -60*60*24*30));
   // 将起始日的起始日期設定為結束日的前第三十天,日期範圍為一個月
   start_time.min = convertDate2String(adjustDate(cur, -60*60*24*30));
  }
  };

  laydate(start_time);
  laydate(end_time);
 </script>
 </body>
</html>

           

page.css 對應的源碼為:

*{
 margin:0;
 padding:0;
 list-style:none;
}

html{
 background-color:#E3E3E3;
 font-size:14px;
 color:#000;
 font-family:'微軟雅黑'
}

h2{
 line-height:30px;
 font-size:20px;
}

a,a:hover{
 text-decoration:none;
}

pre{
 font-family:'微軟雅黑'
}

.box{
 width:1200px;
 padding:10px 20px;
 background-color:#fff;
 margin:10px auto;
}

.box a{
 padding-right:20px;
}

h3{
 margin:10px 0;
}

.layinput{
 height: 22px;
 line-height: 22px;
 width: 150px;
 margin: 0;
}
           

convertString2Date 函數對應的源碼如下:

layDate日期選擇插件

convertDate2String 函數對應的源碼如下:

layDate日期選擇插件

adjustDate 函數對應的源碼如下:

layDate日期選擇插件

運作結果如下所示:

layDate日期選擇插件

至此,HTML-001-日期元件 layDate 示範順利完結,希望此文能夠給初學 HTML 的您一份參考。

轉自:http://www.jb51.net/article/101987.htm