Reputation: 449
I have 2 datepickers and a dropdown and I want to set the min and max dates of the second datepicker based on the dropdown selection as shown below.
<asp:DropDownList ID="ddlleavetype" class="textbox" onchange="ShowHideDiv()" runat="server">
<asp:ListItem Value="">--Select--</asp:ListItem>
<asp:ListItem Value="Casual leave">Casual leave</asp:ListItem>
<asp:ListItem Value="Sick leave">Sick leave</asp:ListItem>
<asp:ListItem Value="Annual leave">Annual leave</asp:ListItem>
<asp:ListItem Value="Paternity leave">Paternity leave</asp:ListItem>
<asp:ListItem Value="Maternity leave">Maternity leave</asp:ListItem>
<asp:ListItem Value="Bereavement leave">Bereavement leave</asp:ListItem>
</asp:DropDownList>
So If I select Casual leave from the above dropdown the max date of datepicker2 should be the next day of datepicker1 and if it is a different selection from dropdown then the max date of datepicker2 can be n number of days. Below would be the code for the datepickers.
$('.datepicker1').datepicker({
beforeShowDay: highlightDays,
minDate: 1,
dateFormat: "yy/mm/dd",
changeMonth: true,
changeYear: true,
maxDate: 2020,
onSelect: function (dateStr) {
var min = $(this).datepicker('getDate') || new Date();
var max = $(this).datepicker('getDate') || new Date();
max.setDate(max.getDate() + 1);
min.setDate(min.getDate() + 1);
$('.datepicker4').datepicker('option', { minDate: min, maxDate: max });
}
});
$('.datepicker2').datepicker({
beforeShowDay: highlightDays,
//minDate: 2,
dateFormat: "yy/mm/dd",
changeMonth: true,
changeYear: true,
onSelect: function (dateStr) {
var max = $(this).datepicker('getDate');
$('.datepicker1').datepicker('option', { maxDate: max });
}
Date().getFullYear().toString()
});
Upvotes: 0
Views: 943
Reputation: 9771
You have to get value in your drop down option via jquery.
<script type="text/javascript">
$(function () {
$(".datepicker1").datepicker({
dateFormat: "yy/mm/dd",
changeMonth: true,
changeYear: true,
//your options here
onSelect: function (dateStr) {
var min = $(this).datepicker('getDate') || new Date();
var max = $(this).datepicker('getDate') || new Date();
max.setDate(max.getDate() + 1);
min.setDate(min.getDate() + 1);
var selectedValue = $('#<%=ddlleavetype.ClientID%>').val();
if (selectedValue == 'Casual leave') {
$(".datepicker2").datepicker('option', { minDate: min, maxDate: max });
}
else {
$(".datepicker2").datepicker('option', { minDate: null, maxDate: null });
}
}
});
$(".datepicker2").datepicker({
dateFormat: "yy/mm/dd",
changeMonth: true,
changeYear: true,
//your options here
});
$('#<%=ddlleavetype.ClientID%>').change(function () {
if (this.value) {
var min = $(".datepicker1").datepicker('getDate') || new Date();
var max = $(".datepicker1").datepicker('getDate') || new Date();
max.setDate(max.getDate() + 1);
min.setDate(min.getDate() + 1);
var selectedValue = this.value;
if (selectedValue == 'Casual leave') {
$(".datepicker2").datepicker('option', { minDate: min, maxDate: max });
}
else {
$(".datepicker2").datepicker('option', { minDate: null, maxDate: null });
}
}
});
});
</script>
Upvotes: 1