jquery 日期选择器有条件地禁用按钮栏上的今天
jquery datepicker conditionally disable Today on button bar
我有一个 jquery 日期选择器,其中只有某些日期在日历中是可分割的。按钮栏上的今天按钮的功能已被覆盖以在字段中填充今天的日期。现在,如果今天不是用户选择的有效日期,我将尝试禁用按钮栏上的今天按钮。我试图通过将 ui-datepicker-current class 更改为包含 ui-state-disabled 而不是 ui-state-default 来做到这一点。不过,我似乎无法更改 classes。我尝试在 beforeShow:
中添加逻辑
$(document).ready( function() {
$( ".MyForm-date" ).datepicker( {
changeYear: true,
dateFormat: "dd M yy",
yearRange: "-20:+10",
showButtonPanel: true,
beforeShow : function( input, instance ) {
instance.dpDiv.find(".ui-datepicker-current").removeClass("ui-state-default").addClass("ui-state-disabled");
return initGoodReportDates( input, instance ); },
onChangeMonthYear : function( year, month, instance ) { return refreshGoodReportDates(year, month, instance); },
beforeShowDay : function( date ) { return isGoodReportDate( date ); },
onClose : function(){ checkDate( this ); }
});
以及在此块下方添加逻辑:
$(document).ready( function() {
$( ".MyForm-date" ).datepicker( {
changeYear: true,
dateFormat: "dd M yy",
yearRange: "-20:+10",
showButtonPanel: true,
beforeShow : function( input, instance ) {
return initGoodReportDates( input, instance ); },
onChangeMonthYear : function( year, month, instance ) { return refreshGoodReportDates(year, month, instance); },
beforeShowDay : function( date ) { return isGoodReportDate( date ); },
onClose : function(){ checkDate( this ); }
});
$(".MyForm-date").datepicker("widget").find("ui-datepicker-current").removeClass("ui-state-default").addClass("ui-state-disabled");
然而,两者都没有更改与 ui-datepicker-current 按钮关联的 classes。谁能告诉我如何访问该按钮?
谢谢
在 beforeShow 执行后使用超时修改按钮:
$('.foo').datepicker({
beforeShow: function(input, inst) {
setTimeout(function() {
//...
}, 0);
}
})
查看示例 here
您还必须处理 onChangeMonthYear
事件。
我有一个 jquery 日期选择器,其中只有某些日期在日历中是可分割的。按钮栏上的今天按钮的功能已被覆盖以在字段中填充今天的日期。现在,如果今天不是用户选择的有效日期,我将尝试禁用按钮栏上的今天按钮。我试图通过将 ui-datepicker-current class 更改为包含 ui-state-disabled 而不是 ui-state-default 来做到这一点。不过,我似乎无法更改 classes。我尝试在 beforeShow:
中添加逻辑$(document).ready( function() {
$( ".MyForm-date" ).datepicker( {
changeYear: true,
dateFormat: "dd M yy",
yearRange: "-20:+10",
showButtonPanel: true,
beforeShow : function( input, instance ) {
instance.dpDiv.find(".ui-datepicker-current").removeClass("ui-state-default").addClass("ui-state-disabled");
return initGoodReportDates( input, instance ); },
onChangeMonthYear : function( year, month, instance ) { return refreshGoodReportDates(year, month, instance); },
beforeShowDay : function( date ) { return isGoodReportDate( date ); },
onClose : function(){ checkDate( this ); }
});
以及在此块下方添加逻辑:
$(document).ready( function() {
$( ".MyForm-date" ).datepicker( {
changeYear: true,
dateFormat: "dd M yy",
yearRange: "-20:+10",
showButtonPanel: true,
beforeShow : function( input, instance ) {
return initGoodReportDates( input, instance ); },
onChangeMonthYear : function( year, month, instance ) { return refreshGoodReportDates(year, month, instance); },
beforeShowDay : function( date ) { return isGoodReportDate( date ); },
onClose : function(){ checkDate( this ); }
});
$(".MyForm-date").datepicker("widget").find("ui-datepicker-current").removeClass("ui-state-default").addClass("ui-state-disabled");
然而,两者都没有更改与 ui-datepicker-current 按钮关联的 classes。谁能告诉我如何访问该按钮?
谢谢
在 beforeShow 执行后使用超时修改按钮:
$('.foo').datepicker({
beforeShow: function(input, inst) {
setTimeout(function() {
//...
}, 0);
}
})
查看示例 here
您还必须处理 onChangeMonthYear
事件。