我正在尝试根据给定输入日期的用户选择来设置maxDate,假设如果用户选择今天为日期,则应将maxDate设置为从今天起3天或4天,甚至是一周,直到max。但是我正在使用以下逻辑进行设置minDate根据用户输入选择自动

 $(checkIn).datepicker(
           {
                changeMonth:false,
                changeYear:false,
                dateFormat: 'dd/mm/yy',
                minDate:0
           });
           var temp;
           $(checkIn).on("change",function()
           {
               var select = $(this).datepicker("getDate");
               temp=select;
               $(checkOut).datepicker('option','minDate',temp)

           })


这种逻辑在这里很好,但是当我尝试根据这种逻辑设置maxDate时,我得到了一定的错误,这里是代码

$(checkOut).datepicker({
               changeMonth:false,
                changeYear:false,
                dateFormat: 'dd/mm/yy',
                maxDate: new Date($(checkIn).val()) + "1w"
    })


当我运行此代码时,发生的事情是,例如,如果我选择今天的日期,它会给出正确的maxDate直到7天,但是如果我再次更改checkIn输入中的日期,则maxDate会少一天,因此当我不断从当前日期选择向前日期时日期将会出现一个点,其中checkOut输入中的所有日期都被禁用,我无法选择其中任何一个。

最佳答案

您可以删除更改事件并使用beforeShow回调,以便为第二个日期选择器设置maxDate,如下所示:



$('#checkIn').val($.datepicker.formatDate('dd/mm/yy', new Date()));
$('#checkIn').datepicker({
    changeMonth: false,
    changeYear: false,
    dateFormat: 'dd/mm/yy',
    minDate: 0,
});

$('#checkOut').datepicker({
    changeMonth:false,
    changeYear:false,
    dateFormat: 'dd/mm/yy',
    beforeShow: function(input, inst) {
        var minDate = $('#checkIn').datepicker('getDate');
        $('#checkOut').datepicker('option', 'minDate', minDate);
        var maxDate = new Date(minDate.valueOf());
        maxDate.setDate(maxDate.getDate() + 7);
        $('#checkOut').datepicker('option', 'maxDate', maxDate);
    }
});

<link href="https://code.jquery.com/ui/1.12.0/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>


<p>Chack In date: <input type="text" id="checkIn"></p>

<p>Check Out date: <input type="text" id="checkOut"></p>

关于jquery - 如何基于特定值在jquery datepicker中设置maxDate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44987021/

10-08 22:55