flatpickr 時間 選擇器 使用 简体版
原文   原文鏈接

1、使用方法:
1. 在頁面中引入flatpicker.css和flatpicker.js文件。css

<link rel="stylesheet" type="text/css" href="/path/to/flatpickr.css">
<script src="/path/to/flatpickr.js"></script>

2. HTML代碼:html

<input class='flatpickr' data-enable-time='true' data-time_24hr='true' >

代碼中的 data- 屬性是可選的,也能夠選擇寫在 js 初始化參數中,去掉 data- 就能夠。bootstrap

3. 初始化插件函數

 

document.getElementsByClassName("myClass").flatpickr({..config});
document.getElementById("myID").flatpickr();   // js 初始化方法
$(".calendar").flatpickr();                    // jQuery 初始化方法
// 設置參數
$(".calendar").flatpickr({

   enable-time: true,
   time_24hr: true,
   onClose: function(dateObj, dateStr, instance){

     }spa

})

4.  該插件有三個回調函數:插件

onChange function(dateObject, dateString, instance) 每第二天期被選擇的時候都觸發該函數。
onOpen function(dateObject, dateString, instance) 每第二天曆被打開時都會觸發該函數。
onClose function(dateObject, dateString, instance) 每第二天曆被關閉時都會觸發該函數。

 回調函數有三個參數,第一個是當前中國標準時間,格式爲  Tue Feb 13 2018 00:00:00 GMT+0800 (中國標準時間),第二個是當前日期 2018-02-13,第三個則返回的是當前 flatpickr 對象:code

   

  就這樣,而後咱們就能夠根據須要編寫相應的操做。orm

  這裏舉兩個栗子:htm

  1. 開始時間  ——  結束時間  對最大最小時間進行限制,達到聯動的效果對象

  html:

<div class="input-group">
     <input type="text" id="datetimeStart" class="form-control" placeholder="起始日期">
     <div class="input-group-addon clear-time-start">
     <
span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
   </
div> </div><div class="input-group""> <input type="text" id="datetimeEnd" class="form-control" placeholder="結束日期"> <div class="input-group-addon clear-time-end">
   <
span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
   </
div> </div>

  js:

  // 初始化 起始時間 和 結束時間
    var time_start =  $("#datetimeStart").flatpickr({
        onClose: function(dateObj, dateStr, instance){
            // doSomething
        }
    });
    var time_end = $("#datetimeEnd").flatpickr({
        onClose: function(dateObj, dateStr, instance){
            // doSomething
        }
    });
    // 時間限制
    time_start.config.onChange = function (dateObj) {
        time_end.set("minDate", dateObj.fp_incr(1));
    };
    time_end.config.onChange = function ( dateObj ) {
        time_start.set("maxDate", dateObj.fp_incr(-1));
    };

  2.  看上面的代碼有人可能注意到了,這裏有一個清空的操做,我一開始用 flatpickr 的 demo 方法,就沒有生效,而後我就手動清空了 input 的值,結果發現單純清空 input的值並不能觸發 onChange 回調函數,結果 input 是清空了,可是選擇結束時間的時候對它的最小時間仍然有限制,也就是說對 flatpickr 時間選擇器 來講 開始時間依然存在,並無獲得通知說開始時間清空了。

  而後我嘗試了一些辦法發現 flatpickr 是有本身的清除機制的,就是 clear 方法:

     // 開始日期清空
    $('.clear-time-start').click(function () {
        time_start.clear();
    });

  這樣會觸發 onChange 回調,可是這個時候回調的參數 dateObj 的參數會變成 null,因此在對時間限制的地方要判斷一下。

  由於我以前發現這個問題沒找到答案,因此在這裏記錄一下,但願能幫到你,這個方法不算好,但也算是一個思路。

     下面附一個 參數表 。

     配置參數表

    在配置參數中,全部的類型爲string或boolean的參數均可以經過data-屬性在HTML標籤中進行設置。例如:data-min-date、data-default-date、data-default-date等。

 
參數 類型 默認值 描述
altFormat string "F j, Y" altInput的日期格式。
altInput Boolean false 是否使用某種用戶友好的方式來顯示日期時間。
altInputClass String "" 添加到input上的自定義class類。例如bootstrap用戶可能須要添加一個form-control class。
allowInput boolean false 是否容許用戶直接在輸入框中輸入日期。
clickOpens boolean true 是否在點擊輸入框時打開日期時間選擇界面。若是你想經過手動.open()方法來打開,該選項設置爲false。
dateFormat string "Y-m-d" 設置日期顯示格式。
defaultDate String/Date Object null 設置一個初始的日期。
disable array [] 被禁用的日期。
enableTime boolean false 是否啓用時間選擇。
enableSeconds boolean false 在時間選擇器中是否能夠選擇秒。
noCalendar boolean false 是否隱藏日曆。
hourIncrement integer 1 小時輸入框的步長。
minuteIncrement integer 5 分鐘輸入框的步長。
inline boolean false 是否之內聯的方式顯示日曆。
static boolean false 日期選擇器位於包裹容器的位置。
wrap boolean false 包裹元素。
maxDate String null 用戶能夠選擇的最大日期。
minDate String null 用戶能夠選擇的最小日期。
onChange function(dateObject, dateString) null 每第二天期被選擇的時候都觸發該函數。
onOpen function(dateObject, dateString) null 每第二天曆被打開時都會觸發該函數。
onClose function(dateObject, dateString) null 每第二天曆被關閉時都會觸發該函數。
parseDate function false 接收一個日期字符串並返回一個日期對象。
shorthandCurrentMonth boolean false 以簡寫方式顯示月份
weekNumbers boolean false 是否在日曆中顯示星期數。
time_24hr boolean false 是否以24小時格式來顯示時間。
utc boolean false 日期將會被解析、格式化和顯示爲UTC格式。
prevArrow string < 向前箭頭圖標。
nextArrow string > 向後箭頭圖標。
 

    日期格式字符

 
字符 描述 示例
d 月份中的天數,若是不滿2個數字的會前導0。 01 - 31
D 一個星期中某一天的簡寫文本表示 Mon - Sun
l(小寫的L) 一個星期中某一天的文本表示 Sunday - Saturday
j 不帶前導0的月份中的天數 1 - 31
J 帶序號後綴,不帶前導0的月份中的天數 1st, 2nd, to 31st
w 使用數字來表明星期中的某一天 0 (星期天) - 6 (星期六)
F 月份的完整文本表示 January - December
m 使用數字來表示月份,前導帶0。 01 - 12
n 使用數字來表示月份,前導不帶0。 1 - 12
M 月份的簡寫文本表示 Jan - Dec
U 時間戳 1413704993
y 兩個數字表明的年 99 or 03
Y 4個數字表明的年 1999 or 2003
 
字符 描述 示例
H 24小時制 00 to 23
h 12小時制 1 to 12
i 分鐘 00 to 59
S 秒(不滿2位數補0) 00 to 59
s 0 - 59
K AM/PM AM or PM
相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
本站公眾號
   歡迎關注本站公眾號,獲取更多信息