我正在使用 jquery datepicker,我有 4 个日期:start_date、end_date、publishing_date 和 departure_date。这里基于 start_date 我想禁用 start_date 之前的 future 日期,同样基于 end_date 我想禁用结束日期的过去日期。我无法这样做,尝试了很多 onSelect 选项,但我无法获得所需的禁用。这是我的 jquery 代码。
var dateToday = new Date();
var dates = $("#start_date, #end_date").datepicker({
dateFormat: 'yy-mm-dd',
minDate: dateToday,
onSelect: function(selectedDate) {
var option = this.id == "start_date" ? "minDate" : "maxDate",
instance = $(this).data("datepicker"),
date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
dates.not(this).datepicker("option", option, date);
}
});
$('#departure_date').datepicker({
dateFormat: 'yy-mm-dd',
minDate: $('#end_date').datepicker({
dateFormat: 'dd-mm-yy'
}).val()
});
$('#publishing_date').datepicker({
dateFormat: 'yy-mm-dd',
maxDate: $('#start_date').datepicker({
dateFormat: 'dd-mm-yy'
}).val()
});
欢迎提出任何建议/帮助。在此先致谢。
也尝试过如下使用,但无济于事。
$('#publishing_date').datepicker({
dateFormat: 'yy-mm-dd',
maxDate : ($.datepicker.formatDate('yy-mm-dd', $('#start_date').datepicker("getDate")))
});
最佳答案
根据@Mahesh Sapkal 的建议,我对代码进行了以下更改。
var dateToday = new Date();
var dates = $("#start_date, #end_date").datepicker({
dateFormat: 'yy-mm-dd',
minDate: dateToday,
onSelect: function(selectedDate) {
var option = this.id == "start_date" ? "minDate" : "maxDate",
instance = $(this).data("datepicker"),
date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
if(this.id == "start_date"){
$("#publishing_date").datepicker({
dateFormat: 'yy-mm-dd',
minDate: dateToday,
maxDate: date
});
}
if(this.id == 'end_date'){
$("#departure_date").datepicker({
dateFormat: 'yy-mm-dd',
minDate: date
})
}
dates.not(this).datepicker("option", option, date);
}
}); 不知道为什么,但他的建议 $( "#departure_date").datepicker( "选项", "minDate",date ); 对我不起作用。
关于javascript - 如何根据 jquery datepicker 中的某些 datepicker 值禁用 future 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782511/