2017-05-12 60 views
0

我目前正在爲我的一位朋友度假公寓網站工作。我遇到了一個問題,不知道如何處理它。我正在使用名爲bootstrap-daterangepicker的插件或僅使用daterangepicker。問題是:防止選擇包含不可用時間跨度的時間跨度

我想阻止用戶選擇包含不可用日期的時間跨度,這意味着如果其他人已經預訂並因此制定了時間跨度「1月4日 - 20日」,則不應該選擇時間跨度在前面提到的時間範圍內(例如「1月7日 - 11日」)不可用。因此,如果用戶選擇一個日期,則必須找出下一個禁用日期的時間安排爲數組「不可用」提供的時間,並禁用選擇該日期之後的所有日期,因此類似於maxDate選項(在我的示例中爲所有日期從現在起一年零一個月後再也不能選擇了)。

As you can see the time span "June 10th - 14th 2017" cannot be selected. However one can select dates after that time span.

我禁止使用isInvalidDate選擇特定日期的選擇:

var unavailable = [ 
    '10.06.2017', 
    '11.06.2017', 
    '12.06.2017', 
    '13.06.2017', 
    '14.06.2017', 
] 

$('input[name="datefilter"]').daterangepicker({ 
    maxDate: moment().add({ 
     years:1, 
     months:1 
    }), 
    locale: { 
     format: 'DD.MM.YYYY' 
    }, 
    isInvalidDate: function(date) 
    { 
     return !!(unavailable.indexOf(date.format('DD.MM.YYYY')) > -1); 
    } 
}); 
+0

那麼有什麼不適合你? –

+0

我不知道在daterangepicker.js中選擇的日期的變量是什麼,以及如何找出下一個不可用的日期使用這個變量和數組... – Moritz

+0

其餘的只是將類「關閉「和」禁用「的日期後,第一個不可用的應該很容易... @ Sag1v – Moritz

回答

0

這裏是我會做: - 在每個數據點擊查看是否開始和結束日期都充滿在 - 如果沒有,不要做任何事情。 - 當開始和結束數據可用時,生成開始和結束數據之間的所有日期(包括兩者)的數組。 - 陣列不可用array_intersect - 如果結果爲空數組,則可以預約日期。否則無法預訂。