根据下拉值设置2个日期选择器的最小日期和最大日期

时间:2018-09-01 06:28:40

标签: c# jquery asp.net datepicker

我有2个日期选择器和一个下拉菜单,我想根据下拉选择设置第二个日期选择器的最小和最大日期,如下所示。

schema.xml

因此,如果我从上面的下拉列表中选择临时休假,则datepicker2的最大日期应为datepicker1的第二天,如果与下拉列表不同,则datepicker2的最大日期可以为n天。下面是日期选择器的代码。

  <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>

1 个答案:

答案 0 :(得分:1)

您必须通过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>