javascript - 是否可以在 Tempus Dominus bootstrap 4 datetimepicker 中将 minDate 和 maxDate 设置为同一天?

标签 javascript jquery bootstrap-4

我正在使用 TempusDominus Bootstrap4 日期时间选择器 ( https://tempusdominus.github.io/bootstrap-4/ )。 我在 HTML 中只有 2 个简单的输入,它们是这些

<div class='mb-3'>
     <input type="text" class="form-control datetimepicker-input" id="datetimepicker7" data-toggle="datetimepicker" data-target="#datetimepicker7" readonly="readonly"/>
</div>
<div class='mb-3'>      
     <input type="text" class="form-control datetimepicker-input" id="datetimepicker8" data-toggle="datetimepicker" data-target="#datetimepicker8" readonly="readonly"/>
</div>    

和这个在 jquery 中

  var $horaInicio = $('#datetimepicker7');
  var $horaFin = $('#datetimepicker8');

  $horaInicio.datetimepicker({
    useCurrent: false,
    locale:'es',
    daysOfWeekDisabled: [0,6],
    minDate: moment(),
    autoClose: true,
    ignoreReadonly: true,

  });

  $horaFin.datetimepicker({
    useCurrent: false,
    locale: 'es',
    daysOfWeekDisabled: [0,6],
    ignoreReadonly: true,
    minDate: moment(),
    autoClose: true,

  });

  $horaInicio.on("change.datetimepicker", function (e) {

    $horaFin.datetimepicker('minDate',e.date);

  });


  $horaFin.on("change.datetimepicker", function (e) {
    $horaInicio.datetimepicker('maxDate', e.date);
  });

在我的系统中,我需要管理应该在同一天开始和结束的预订,所以我想限制第二个日期选择器 (#datepicker8),以便将 minDate 属性设置为在第一个日期选择器 (#datepicker7) 中选择的相同日期) 和 maxDate 属性再增加 1 天。 (即,除了用第一个日期时间选择器选择的那一天之外的所有日子都被禁用)

使用上面的代码,我可以选择“今天”作为开始日,然后我可以选择从“今天”到 future 几年的任何一天。如果我先选择 (DD/MM/YYYY) 11/09/2019 14:00,然后我可以毫无问题地选择 11/09/2019 14:30 或 15:00。但是当我尝试修改第二个日期选择器的 maxDate 时,它​​不起作用

我已经试过了:

$horaInicio.on("change.datetimepicker", function (e) {

    $horaFin.datetimepicker('minDate',e.date);
    $horaFin.datetimepicker('maxDate', e.date.add(1,'day');

  });

但它不起作用,我无法使用第二个日期时间选择器选择任何一天。因为我从今天开始将 1 天添加到 maxDate,所以那一天显示为已启用但我无法选择它,单击它什么也不做。 我没有出现任何错误。似乎设置 minDate 和 maxDate 破坏了日期选择器。

最佳答案

看看这个: How to allow maxDate and minDate to be equal

我会说这可能也是一个日期格式问题。
尝试使用以下格式格式化日期:

function formatDate(date) {
    var months = [
        "1", "2", "3",
        "4", "5", "6",
        "7", "8", "9",
        "10", "11", "12"
    ];

    var day = date.getDate();
    var monthIndex = date.getMonth();
    var year = date.getFullYear();

    return day + '/' + months[monthIndex] + '/' + year;
}

然后将格式化的日期设置为 minDate 和 maxDate 函数的参数:

$horaInicio.on("change.datetimepicker", function (e) {
    let formattedDate = formatDate(e.date.toDate());
    $horaFin.datetimepicker('minDate', formattedDate);
});


$horaFin.on("change.datetimepicker", function (e) {
    let formattedDate = formatDate(e.date.toDate());
    $horaInicio.datetimepicker('maxDate', formattedDate);
});

甚至可能:

$horaInicio.on("dp.change", function (e) {
    let formattedDate = formatDate(e.date.toDate());
    $horaFin.data("DateTimePicker").minDate(formattedDate);
});


$horaFin.on("dp.change", function (e) {
    let formattedDate = formatDate(e.date.toDate());
    $horaInicio.data("DateTimePicker").maxDate(formattedDate);
});

关于javascript - 是否可以在 Tempus Dominus bootstrap 4 datetimepicker 中将 minDate 和 maxDate 设置为同一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57730361/

相关文章:

javascript - 在同构应用程序上运行 Mocha 测试时无法导入 SCSS 文件

javascript - 为什么chrome使用断点时渲染结果不一样?

javascript - 如何将参数/参数传递给通过调用 click 以编程方式触发的 onchange 监听器

javascript - 使用 jquery 序列化时解析用户输入的名称

javascript - 为什么我不能使用 jquery id 值调用函数?

javascript - HTML 按钮文本在无限循环之前不会改变

javascript - Math.min 和 Math.max 超出了最大调用堆栈大小

javascript - jquery - 使用 event.stopPropagation()

html - 引导列?

html - 如何在 html 中实现一个简短的链接以从日期选择器中选择最近 7 天左右的日期?