beforeShowDay 在 jQuery 日期选择器中禁用 minDate
beforeShowDay disables minDate in jQuery datepicker
我正在使用两个 jQuery 日期选择器,根据生成的数组禁用日期。当我将 $("#date") 日期选择器放在 $('input') 之后时,效果很好。但是,我还需要将 mindate 设置为今天,并将 maxDate 设置为之后的 1 年;当顺序相反时,它会起作用。我怎样才能使它们都起作用?
$(function() {
var array=[]; //disabled dates for the beforeShowDay go here
$('input').datepicker({
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [$.inArray(string, array) == -1];
}
});
$( "#date" ).datepicker({
dateFormat: 'yy-mm-dd',
minDate: new Date(),
maxDate: '+1y',
onSelect: function(date){
var selectedDate = new Date(date);
var msecsInADay = 86400000;
var endDate = new Date(selectedDate.getTime() + msecsInADay);
$("#date1").datepicker( "option", "minDate", endDate );
$("#date1").datepicker( "option", "maxDate", '+1y' );
}
});
$("#date1").datepicker({
dateFormat: 'yy-mm-dd',
});
});
我不会尝试在同一个 DOM 元素上应用两个选择器('input' 和“#date”),因为第二个可以覆盖第一个的配置。如果您希望两个日期选择器共享相同的 beforeShowDay
函数,您可以声明一次并将其分配给每个日期选择器。
我不太清楚你想要达到什么目的。但也许以下使用通用 beforeShowDay
函数的方法可能会有所帮助。无论如何,下面的示例将向您展示如何将包含日期选择器的 JSFiddle 插入到您的问题中以阐明您想要的内容。
$(function() {
var array=['2016-12-08']; //disabled dates for the beforeShowDay go here
var beforeShowDay = function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [$.inArray(string, array) == -1];
};
$( "#date" ).datepicker({
beforeShowDay: beforeShowDay,
dateFormat: 'yy-mm-dd',
minDate: new Date(),
maxDate: '+1y',
onSelect: function(date){
var selectedDate = new Date(date);
var msecsInADay = 86400000;
var endDate = new Date(selectedDate.getTime() + msecsInADay);
$("#date1").datepicker( "option", "minDate", endDate );
$("#date1").datepicker( "option", "maxDate", '+1y' );
}
});
$("#date1").datepicker({
beforeShowDay: beforeShowDay,
dateFormat: 'yy-mm-dd'
});
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input id="date">
<input id="date1">
我正在使用两个 jQuery 日期选择器,根据生成的数组禁用日期。当我将 $("#date") 日期选择器放在 $('input') 之后时,效果很好。但是,我还需要将 mindate 设置为今天,并将 maxDate 设置为之后的 1 年;当顺序相反时,它会起作用。我怎样才能使它们都起作用?
$(function() {
var array=[]; //disabled dates for the beforeShowDay go here
$('input').datepicker({
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [$.inArray(string, array) == -1];
}
});
$( "#date" ).datepicker({
dateFormat: 'yy-mm-dd',
minDate: new Date(),
maxDate: '+1y',
onSelect: function(date){
var selectedDate = new Date(date);
var msecsInADay = 86400000;
var endDate = new Date(selectedDate.getTime() + msecsInADay);
$("#date1").datepicker( "option", "minDate", endDate );
$("#date1").datepicker( "option", "maxDate", '+1y' );
}
});
$("#date1").datepicker({
dateFormat: 'yy-mm-dd',
});
});
我不会尝试在同一个 DOM 元素上应用两个选择器('input' 和“#date”),因为第二个可以覆盖第一个的配置。如果您希望两个日期选择器共享相同的 beforeShowDay
函数,您可以声明一次并将其分配给每个日期选择器。
我不太清楚你想要达到什么目的。但也许以下使用通用 beforeShowDay
函数的方法可能会有所帮助。无论如何,下面的示例将向您展示如何将包含日期选择器的 JSFiddle 插入到您的问题中以阐明您想要的内容。
$(function() {
var array=['2016-12-08']; //disabled dates for the beforeShowDay go here
var beforeShowDay = function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [$.inArray(string, array) == -1];
};
$( "#date" ).datepicker({
beforeShowDay: beforeShowDay,
dateFormat: 'yy-mm-dd',
minDate: new Date(),
maxDate: '+1y',
onSelect: function(date){
var selectedDate = new Date(date);
var msecsInADay = 86400000;
var endDate = new Date(selectedDate.getTime() + msecsInADay);
$("#date1").datepicker( "option", "minDate", endDate );
$("#date1").datepicker( "option", "maxDate", '+1y' );
}
});
$("#date1").datepicker({
beforeShowDay: beforeShowDay,
dateFormat: 'yy-mm-dd'
});
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input id="date">
<input id="date1">