jquery datepicker在按钮栏上有条件地禁用今天

时间:2018-01-31 17:32:03

标签: jquery jquery-ui datepicker format buttonbar

我有一个jquery日期选择器,其中只有某些日期可以在日历中分段。按钮栏上今日按钮的功能已被覆盖,以填充今天在该字段中的日期。现在我尝试禁用按钮栏上的今日按钮,如果今天不是用户选择的有效日期。我试图通过更改ui-datepicker-current类来包含ui-state-disabled而不是ui-state-default来做到这一点。我似乎无法改变课程。我试过在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按钮关联的类。谁能告诉我如何访问该按钮?

谢谢

1 个答案:

答案 0 :(得分:0)

在执行beforeShow之后立即使用超时修改按钮:

    $('.foo').datepicker({
        beforeShow: function(input, inst) {
            setTimeout(function() { 
              //...
            }, 0);   
        }
    })

参见示例here

您还必须处理onChangeMonthYear事件。