如何使用 jQuery Datepicker 动态应用 setDate 和(minDate 和 maxDate)日期范围?

Posted

技术标签:

【中文标题】如何使用 jQuery Datepicker 动态应用 setDate 和(minDate 和 maxDate)日期范围?【英文标题】:How to apply both- setDate and (minDate and maxDate )Date Range dynamically using jQuery Datepicker? 【发布时间】:2021-04-11 00:43:24 【问题描述】:

我有一个下拉菜单,我可以从中选择年份和另一个具有日期选择器的日历字段。

我想要做的是,如果我选择 2021 年,默认日期应该是 12/31/2021,它也应该是 maxDate。

之后,如果我更改 2022 年,默认日期应该是 12/31/2022,就像之前一样,它也应该是 maxDate。

我经历了很多 *** 问题和 api ,但没有解决问题。我错过了什么或做错了什么?

function updateCalendarDate() 
     var calMaxDate = new Date(12 + "/" + 31 + "/" + $("#year").val());
     $('#calDate').val(beforeShowDay1(calMaxDate));
     $("#calDate").datepicker(
         "startDate": beforeShowDay(new Date()),
         "endDate": beforeShowDay(calMaxDate),
         "minDate": beforeShowDay(new Date()),
         "maxDate": beforeShowDay(calMaxDate)
     );
     $("#calDate").datepicker("destroy");
     $("#calDate").datepicker("setDate", beforeShowDay(calMaxDate));
     $( "#calDate" ).datepicker("refresh");
;

到目前为止我尝试过的是: 1.

 $("#calDate").datepicker(
    "setDate": beforeShowDay(calMaxDate),
     "startDate": beforeShowDay(new Date()),
     "endDate": beforeShowDay(calMaxDate),
     "minDate": beforeShowDay(new Date()),
     "maxDate": beforeShowDay(calMaxDate)
 );
    先设置默认日期,然后销毁并再次设置maxDate

$("#calDate").datepicker("setDate", beforeShowDay(calMaxDate));

$('#calDate').datepicker('destroy'); $('#calDate').datepicker('option', 'maxDate', new Date(calMaxDate));

如果我使用setDate 那么setDate 属性不起作用。

【问题讨论】:

new Date(12 + "/" + 31 + "/" + $("#year").val()); 为什么不用new Date($("#year").val(),11,31) 这样您就不会遇到任何本地化问题? 没有本地化问题 【参考方案1】:

在api你有流动

设置日期:使用setDate

$("selector").datepicker("setDate", yourCreatedDate);

设置最大日期使用maxDate

$("selector").datepicker( "option", "maxDate", yourCreatedDate );

请参阅下面的工作 sn-p 以获得更多理解

jQuery(document).ready(function ($) 
  $("#calDate").datepicker(
  );
  
  $('#year').on("change", function(e) 
    if(!this.value) return;
    
    let setDate = new Date (this.value,11,31);
    
    console.log(setDate);
    //this prevent maxdate if going ahead  for date
    $("#calDate").datepicker( "option", "maxDate", null );
    $("#calDate").datepicker("setDate", setDate);
    $("#calDate").datepicker( "option", "maxDate", setDate );
    
  );
  
);
@import url("//code.jquery.com/ui/1.10.3/themes/start/jquery-ui.min.css");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>


<input id='year' type='number' />
<input id="calDate" />

【讨论】:

以上是关于如何使用 jQuery Datepicker 动态应用 setDate 和(minDate 和 maxDate)日期范围?的主要内容,如果未能解决你的问题,请参考以下文章

动态禁用 jQuery Datepicker 图标

如何使用 jQuery Datepicker 动态应用 setDate 和(minDate 和 maxDate)日期范围?

如何在 jquery datepicker 中动态禁用特定日期?

jquery ui 里datepicker 怎么使用动态绑定

使用 altFields 动态生成 jQuery Datepicker

jquery datepicker超出css范围