在 jQuery 日期选择器中将 minDate 设置为动态日期

Set minDate to a dynamical date in jQuery datapicker

jQuery-UI 日期选择器中的最小日期设置 (minDate) 应设置为生日(我的代码中的 birthdateDMY)。我正在考虑在 .datepicker({}) 中使用匿名函数,但我不知道如何让它工作。

//birthdateDMY will be something like [ "01", "07", "2015" ]
var name = jQuery("#dropdown").val();
var index = baby.Name.indexOf(name);
var birthdateDMY = baby.BirthDate[index].split("/");

jQuery(function() {   
    jQuery("#datepicker").datepicker({
        //need an anonymous function here to set minDate?
        minDate: (new Date(birthdateDMY[2], birthdateDMY[1] - 1,
birthdateDMY[0])),
    maxDate: 0, 
    dateFormat: "dd/mm/yy"
});

使用 SETTER 解决:

//Setter: update minDate for e.g. #datepicker
function updateMinDate(selector){
    //birthdateDMY will be something like [ "01", "07", "2015" ]
    var name = jQuery("#dropdown").val();
    var index = baby.Name.indexOf(name);
    var birthdateDMY = baby.BirthDate[index].split("/");
    //Update minDate in the selected item
    $(selector).datepicker("option", "minDate", new Date(birthdateDMY[2], birthdateDMY[1] - 1, birthdateDMY[0]) );
}

//When changin #dropdown, call updateMinDate
jQuery(document).on('change', '#dropdown', function(e) {
    updateMinDate("#datepicker");
}



jQuery(function() {
  jQuery("#datepicker").datepicker({
    minDate: <some code run when page loads>,
    maxDate: 0, numberOfMonths: 2, dateFormat: "dd/mm/yy"
  });
});

只要您的下拉列表发生变化,您就需要重新初始化日期选择器。现在,当您的页面加载时,它会设置日期选择器,然后永远不会更改它。 因此,像这样的活动应该会有所帮助:

$("#dropdown").change(function(){
//reinitialize date-picker here
});

您可能需要稍微尝试一下,但我认为这会解决您的问题。