Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Eonasdan引导链接的日期时间选择器未按预期工作_Jquery_Twitter Bootstrap_Eonasdan Datetimepicker - Fatal编程技术网

Jquery Eonasdan引导链接的日期时间选择器未按预期工作

Jquery Eonasdan引导链接的日期时间选择器未按预期工作,jquery,twitter-bootstrap,eonasdan-datetimepicker,Jquery,Twitter Bootstrap,Eonasdan Datetimepicker,我的情况是,用户只能选择7天的日期范围 因此,如果开始日期为01-02-2016 00:00最大结束日期应为06-02-2016 23:59 然后,如果用户选择08-02-2016 00:00最长结束日期应为14-02-2016 23:59 因此,我使用日期时间选择器: 我遇到的问题是,当我执行第一个条件时,它工作正常-但当我选择第二个条件时,它在控制台中给出一个错误 以下是我的代码: $(function() { $('#HistoryStartDate').datetimepicke

我的情况是,用户只能选择7天的日期范围

因此,如果开始日期为
01-02-2016 00:00
最大结束日期应为
06-02-2016 23:59

然后,如果用户选择
08-02-2016 00:00
最长结束日期应为
14-02-2016 23:59

因此,我使用日期时间选择器:

我遇到的问题是,当我执行第一个条件时,它工作正常-但当我选择第二个条件时,它在控制台中给出一个错误

以下是我的代码:

$(function() {

  $('#HistoryStartDate').datetimepicker({
    format: 'DD/MM/YYYY HH:mm',
    allowInputToggle: true,
    useCurrent: true
  }).on('dp.change', function(e) {
    $('#HistoryEndDate').data('DateTimePicker').minDate(e.date);
    var m = moment(new Date(e.date));
    m.add(6, 'days');
    $('#HistoryEndDate').data('DateTimePicker').maxDate(m);
  });

  $('#HistoryEndDate').datetimepicker({
    format: 'DD/MM/YYYY HH:mm',
    allowInputToggle: true,
    useCurrent: true
  });


});
以下是JSFIDLE:

编辑:

我发现了一个似乎不是好的解决方案的变通方法,因为它在某些情况下会失败,但我将它发布在这里():


在更新第二个选择器之前,可以尝试检查新的
minDate

$(函数(){
$(“#HistoryStartDate”).datetimepicker({
格式:“DD/MM/YYYY HH:MM”,
AllownPuttoggle:对,
useCurrent:正确
}).on('dp.change',功能(e){
var minNew=e.日期;
var maxNew=e.date.clone().add(6,“天”);
var pickEnd=$('HistoryEndDate');
var minOld=pickEnd.data('DateTimePicker').minDate();
var maxOld=pickEnd.data('DateTimePicker').maxDate();
if(minOld&&minOld.isAfter(maxNew)){
pickEnd.data('DateTimePicker').minDate(minNew);
pickEnd.data('DateTimePicker').maxDate(maxNew);
}否则{
pickEnd.data('DateTimePicker').maxDate(maxNew);
pickEnd.data('DateTimePicker').minDate(minNew);
}
});
$('#HistoryEndDate').datetimepicker({
格式:“DD/MM/YYYY HH:MM”,
AllownPuttoggle:对,
useCurrent:正确
});
});

开始日期
结束日期

在更新第二个选择器之前,您可以尝试检查新的
minDate

$(函数(){
$(“#HistoryStartDate”).datetimepicker({
格式:“DD/MM/YYYY HH:MM”,
AllownPuttoggle:对,
useCurrent:正确
}).on('dp.change',功能(e){
var minNew=e.日期;
var maxNew=e.date.clone().add(6,“天”);
var pickEnd=$('HistoryEndDate');
var minOld=pickEnd.data('DateTimePicker').minDate();
var maxOld=pickEnd.data('DateTimePicker').maxDate();
if(minOld&&minOld.isAfter(maxNew)){
pickEnd.data('DateTimePicker').minDate(minNew);
pickEnd.data('DateTimePicker').maxDate(maxNew);
}否则{
pickEnd.data('DateTimePicker').maxDate(maxNew);
pickEnd.data('DateTimePicker').minDate(minNew);
}
});
$('#HistoryEndDate').datetimepicker({
格式:“DD/MM/YYYY HH:MM”,
AllownPuttoggle:对,
useCurrent:正确
});
});

开始日期
结束日期

对不起,这是我的误解。但是你认为
似乎不是一个好的解决方案
是什么意思呢。你想最小化代码?@ManhLe我的意思是这是一个解决办法-增加2年来设置最小日期不应该是一个解决方案。对不起,这是我的误解。但是你认为
似乎不是一个好的解决方案
是什么意思呢。你想最小化代码?@ManhLe我的意思是这是一个解决办法-增加2年来设置最小日期不应该是一个解决方案。
$(function() {

  $('#HistoryStartDate').datetimepicker({
    format: 'DD/MM/YYYY HH:mm',
    allowInputToggle: true,
    useCurrent: true
  }).on('dp.change', function(e) {

   // Adding two years so I can set the Min Date
    var tt = moment(new Date(e.date));
    tt.add(2, 'years');
    $('#HistoryEndDate').data('DateTimePicker').maxDate(tt);

      // Set the Min date
    $('#HistoryEndDate').data('DateTimePicker').minDate(e.date);

    //Set the Max Date
    var m = moment(new Date(e.date));
    m.add(5, 'days');
    m.add(23, 'hours');
    m.add(59, 'minutes');
    m.add(59, 'seconds');
    $('#HistoryEndDate').data('DateTimePicker').maxDate(m);

      // Set End Date
    var temp = moment(new Date(e.date));
    temp.add(23, 'hours');
    temp.add(59, 'minutes');
    temp.add(59, 'seconds');

    $('#HistoryEndDate').data('DateTimePicker').date(temp);
  });

  $('#HistoryEndDate').datetimepicker({
    format: 'DD/MM/YYYY HH:mm',
    allowInputToggle: true,
    useCurrent: false
  });


});