Reputation: 9076
I have an eventStartDate
and eventEndDate
.
When the start date is selected, I want to set min and max dates for the end date.
Below code works, with one quirk:
when you select the end date, it does not accept the date first time, instead it defaults to today's date. When you select it a second time, it works.
$('#start_date_picker').on('dp.change', function () {
let eventStartDate = moment($('#start_date').val(), 'DD/MM/YYYY');
let minEventEndDate = eventStartDate.clone().add(1, 'days');
let maxEventEndDate = eventStartDate.clone().add(30, 'days');
$('#end_date_picker').data("DateTimePicker").clear();
$('#end_date_picker').data("DateTimePicker").maxDate(maxEventEndDate);
$('#end_date_picker').data("DateTimePicker").minDate(minEventEndDate);
});
Upvotes: 1
Views: 794
Reputation: 4305
I guess there's no #start_date
element in the HTML.
If you want to set end_date_picker
's minDate
and maxDate
after selected a date in #start_date_picker
, you can use the variable that dp.change()
passed.
e = { date, //date the picker changed to. Type: moment object (clone) oldDate //previous date. Type: moment object (clone) or false in the event of a null }
$(function () {
$('#start_date_picker').datetimepicker();
$('#end_date_picker').datetimepicker();
});
$('#start_date_picker').on('dp.change', function (e) {
let eventStartDate = moment(e.date, 'DD/MM/YYYY');
let minEventEndDate = eventStartDate.clone().add(1, 'days').startOf('day');
let maxEventEndDate = eventStartDate.clone().add(30, 'days').endOf('day');
$('#end_date_picker').data("DateTimePicker").clear();
$('#end_date_picker').data("DateTimePicker").maxDate(maxEventEndDate);
$('#end_date_picker').data("DateTimePicker").minDate(minEventEndDate);
});
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.1/moment.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>
<div class='input-group date' id='start_date_picker'>
<input type='text' class="form-control" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<div class='input-group date' id='end_date_picker'>
<input type='text' class="form-control" />
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
Upvotes: 1