Javascript 如何设置maxDate是本年12月的最后一天?

Javascript 如何设置maxDate是本年12月的最后一天?,javascript,jquery,Javascript,Jquery,我有一个日期范围日期选择器: $(function () { //date picker range $(function () { var dateFormat = "mm/dd/yy", from = $("#<%= TextBox1.ClientID %>").datepicker({ //defaultDate: "+1w", changeMonth: true, minDate:

我有一个日期范围日期选择器:

$(function () {
  //date picker range 
  $(function () {         
    var dateFormat = "mm/dd/yy",
      from = $("#<%= TextBox1.ClientID %>").datepicker({
        //defaultDate: "+1w",
        changeMonth: true,
        minDate: MinDateManipulation(),
        beforeShowDay: DisableMonday,
        maxDate: '+2M',
        numberOfMonths:1
      })
      .on("change", function () {
        to.datepicker("option", "minDate", getDate(this));
      }),
      to = $("#<%= TextBox2.ClientID %>").datepicker({
        //defaultDate: "+1w",
        changeMonth: true,
        beforeShowDay: DisableMonday,
        maxDate: '+2M',
        numberOfMonths:1
      })
      .on("change", function () {
        from.datepicker("option", "maxDate", getDate(this));
      });
    function getDate(element) {
      var date;
      try {
        date = $.datepicker.parseDate(dateFormat, element.value);
      } catch (error) {
        date = null;
      }
      return date;
    }
  });
$(函数(){
//日期选择器范围
$(函数(){
var dateFormat=“mm/dd/yy”,
from=$(“#”)日期选择器({
//默认日期:“+1w”,
变化月:对,
minDate:minDate操纵(),
展示日前:残疾日,
最大日期:'+2M',
月数:1
})
.on(“更改”,函数(){
to.datepicker(“选项”,“minDate”,getDate(this));
}),
to=$(“#”)日期选择器({
//默认日期:“+1w”,
变化月:对,
展示日前:残疾日,
最大日期:'+2M',
月数:1
})
.on(“更改”,函数(){
from.datepicker(“option”、“maxDate”、getDate(this));
});
函数getDate(元素){
风险值日期;
试一试{
日期=$.datepicker.parseDate(日期格式,元素.value);
}捕获(错误){
日期=空;
}
返回日期;
}
});
当我尝试从当前日期后的2个月禁用日期时,它会起作用,但目的是在当前年份后的每年1月1日禁用日期

例如:当前日期[2018年11月3日]

我想使用maxDate
[31/12/2018]
禁用在每年12月最后一天之后选择的日期

但是我们如何动态设置maxDate的值?如果不使用my daterange条件脚本手动更新年份值?

您可以使用和使用my code获取最大日期:

function _getMaxDate() {
    const today = moment().startOf('day')
    const lastDayOfYear = moment().endOf('year').startOf('day')

    return lastDayOfYear.diff(today, 'days')
}

现在还不清楚你想要捕捉的范围,但是你可以用你已经拥有的做很多事情

一种方法是将其设置为字符串格式:

var yr = $.datepicker.formatDate("yy", new Date());
var dec31 = "12/31/" + yr;
....({
  maxDate: dec31,
})
这将获得当前年份(2018年)并创建一个字符串,该字符串可用作最长日期:
12/31/2018
。该字符串将保持动态并每年更新

你也可以把一年中的几天定义为假期。你可以做很多事情

也许这个例子将有助于澄清一些事情

$(函数(){
假期={
2018: {
11: {
12: [
假,,
“假日”,
“纪念退伍军人日”
],
22: [
假,,
“假日”,
“感恩节”
]
},
12: {
25: [
假,,
“假日”,
“圣诞节”
],
31: [
假,,
“假日”,
“除夕夜”
]
}
},
2019: {
1: {
1: [
假,,
“假日”,
“元旦”
],
21: [
假,,
“假日”,
“马丁·路德·金纪念日”
]
},
2: {
18: [
假,,
“假日”,
“总统日”
]
},
5: {
27: [
假,,
“假日”,
“阵亡将士纪念日”
]
},
7: {
4: [
假,,
“假日”,
“独立日”
]
},
9: {
2: [
假,,
“假日”,
“劳动节”
]
},
10: {
14: [
假,,
“假日”,
“哥伦布日”
]
},
11: {
11: [
假,,
“假日”,
“退伍军人日”
],
28: [
假,,
“假日”,
“感恩节”
]
},
12: {
25: [
假,,
“假日”,
“圣诞节”
],
31: [
假,,
“假日”,
“除夕夜”
]
}
}
};
功能禁用天数(d){
变量结果=[true,”];
变量yr=$.datepicker.formatDate(“yy”,d),
mo=$.datepicker.formatDate(“m”,d),
dy=$.datepicker.formatDate(“d”,d);
if($.datepicker.formatDate(“D”,D)=“Mon”){
结果[0]=假;
}
如果(假期[年]!==未定义){
如果(假期[yr][mo]!==未定义){
如果(假期[年][月][日]!==未定义){
日志(“假日:”,年,月,日);
结果=假期[年][月][日];
}
}
}
返回结果;
}
var dateFormat=“mm/dd/yy”,
from=$(“#client-id-1”).datepicker({
//默认日期:“+1w”,
变化月:对,
minDate:0,
展示日前:禁用日,
maxDate:“+1y”,
月数:1
})
.on(“更改”,函数(){
to.datepicker(“选项”,“minDate”,getDate(this));
}),
to=$(“#客户端id-2”)。日期选择器({
//默认日期:“+1w”,
变化月:对,
展示日前:禁用日,
最大日期:'+2m',
月数:1
})
.on(“更改”,函数(){
from.datepicker(“option”、“maxDate”、getDate(this));
});
函数getDate(元素){
风险值日期;
试一试{
日期=$.datepicker.parseDate(日期格式,元素.value);
}捕获(错误){
日期=空;
}
返回日期;
}
});

客户1:


客户端2:

我假设这是jQuery UI DatePicker?如果是这样,请查看它接受的天数。如果您知道今天以及您希望的最大日期,您可以动态计算天数。或者使用返回日期、数字或字符串的函数。是的,它是jQuery UI DatePicker。我尝试了一些类似maxDate:new date的方法(someVariabel,1,1)但它仍然不起作用