如何在daterangepicker JS和Laravel中禁用占用日期

时间:2018-03-06 12:01:11

标签: javascript laravel laravel-5 bootstrap-daterangepicker

我正在尝试实施度假村预订,我可以使用bootstrap daterangepicker检查特定日期是否仍然可用,但我无法弄清楚如何执行此操作。我得到了this thread,但它没有使用daterangepicker

注意:我也在使用laravel5.1,所以这可能有助于解决这个问题。

数据库字段

id
name
Place
start_time
end_time

我的JS代码设置与daterangepicker

$(function () {
    $('.time').daterangepicker({
        "minDate": moment('{{ date('Y-m-d G') }}'),
        "timePicker": true,
        "showDropdowns": true,
        "timePicker24Hour": false,
        "timePickerIncrement": 5,
        "autoApply": true,
        "locale": {
            "format": "MM/DD/YYYY hh:mm:ss A",
            "separator": " — ",
        }
    });
});

2 个答案:

答案 0 :(得分:1)

理想情况下,在创建daterangepicker的新实例时,最好使用isInvalidDate配置选项。

isInvalidDate

var disabledDates = {{ $disabledDates->toJson(); }};

$(function () {
    $('.time').daterangepicker({
        "minDate": moment('{{ date('Y-m-d G') }}'),
        "timePicker": true,
        "showDropdowns": true,
        "timePicker24Hour": false,
        "timePickerIncrement": 5,
        "autoApply": true,
        "locale": {
            "format": "MM/DD/YYYY hh:mm:ss A",
            "separator": " — ",
        },
        "isInvalidDate": function (date) {
            return disabledDates.indexOf(date) != -1;
        }
    });
});

此实例中的$disabledDates php变量被假定为禁用日期的集合,所有这些都是字符串格式。

答案 1 :(得分:1)

假设您有start_dateend_date

$(function() {
    var start_date = '2018-3-1';
    var end_date = '2018-3-10';
    $('input[name="daterange"]').daterangepicker({
      "minDate": moment('2018-1-1'),
      "timePicker": true,
      "showDropdowns": true,
      "timePicker24Hour": false,
      "timePickerIncrement": 5,
      "autoApply": true,
      "locale": {
        "format": "MM/DD/YYYY hh:mm:ss A",
        "separator": " — ",
      },
      "isInvalidDate": function (date) {
        var is_valid = true;
        @foreach($dates as $date)
          if(moment(date).isBetween($date->start_date, $date->end_date, 'day', '[]')){
            is_valid = false;
          }
        @endforeach
        return is_valid;
      }
    });
  });

然后您无法选择start_date和end_date之间的日期。