javascript 如何根据jquery datepicker中的某些datepicker值禁用未来日期
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20782511/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to disable future dates based on some datepicker value in jquery datepicker
提问by samjhana joshi
I am using jquery datepicker and I have 4 dates:start_date,end_date,publishing_date and departure_date.Here based on start_date I want to disable future dates upto start_date and similarly based on end_date I want to disable past dates from end date. I am not able to do so, tried many option as onSelect but I just can't get the required disabling.Here is my jquery code.
我正在使用 jquery datepicker 并且我有 4 个日期:start_date、end_date、publishing_date 和离开日期。这里基于 start_date 我想禁用直到 start_date 的未来日期,同样基于 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()
});
Any suggestions/help is welcome.Thanks in advance.
欢迎任何建议/帮助。提前致谢。
Also tried using as follows but to no avail.
也尝试使用如下但无济于事。
$('#publishing_date').datepicker({
dateFormat: 'yy-mm-dd',
maxDate : ($.datepicker.formatDate('yy-mm-dd', $('#start_date').datepicker("getDate")))
});
采纳答案by samjhana joshi
Based on suggestions by @Mahesh Sapkal I made following changes to my code.
根据@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);
}
}); Don't know why but his suggestion of $( "#departure_date" ).datepicker( "option", "minDate",date ); isn't working for me.
}); 不知道为什么,但他的建议 $( "#departure_date" ).datepicker( "option", "minDate",date ); 不适合我。
回答by Deepak Saralaya
try this
试试这个
$("#start_date").datepicker({
dateFormat: 'dd-mm-yy',
minDate: "+0D",
onSelect: function (selectedDate) {
var d = parseInt(selectedDate.substring(0, 2));
var m = parseInt(selectedDate.substring(3, 5));
var y = parseInt(selectedDate.substring(6, 10));
var newDate = new Date(y, m - 1, d + 1);
$("#departure_date").datepicker("option", "minDate", newDate);
}
});
$("#departure_date").datepicker({
dateFormat: 'dd-mm-yy',
minDate: "+0D",
onSelect: function (selectedDate) {
var d = parseInt(selectedDate.substring(0, 2));
var m = parseInt(selectedDate.substring(3, 5));
var y = parseInt(selectedDate.substring(6, 10));
var newDate = new Date(y, m - 1, d + 1);
$("#publishing_date").datepicker("option", "minDate", newDate);
}
});
回答by Mahesh Sapkal
You need to set the departure_date & publishing_date after initialization.
您需要在初始化后设置离开日期和发布日期。
Try this.
试试这个。
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 === "end_date") {
$( "#departure_date" ).datepicker( "option", "minDate",date );
} else {
$( "#publishing_date" ).datepicker( "option", "maxDate",date );
}
}
回答by Chocoboboy
use beforeShowDayoption to do this.
使用beforeShowDay选项来做到这一点。