Jquery Eonasdan引导链接的日期时间选择器未按预期工作
我的情况是,用户只能选择7天的日期范围 因此,如果开始日期为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
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
});
});