我正在尝试根据给定输入日期的用户选择来设置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/