Datepicker - 将最大日期设置为从当前日期算起的 18 年前

Datepicker - Set maximum date to 18 years ago from current date

HTML:

<input type="text" name="date" id="datepicker" autocomplete="off">

JS:

var maxBirthdayDate = new Date();
maxBirthdayDate.setFullYear( maxBirthdayDate.getFullYear() - 18 );

$( "#datepicker" ).datepicker({
    dateFormat: 'dd.mm.yy',
    changeMonth: true,
    changeYear: true,
    maxDate: maxBirthdayDate
});

JSFIDDLE:

https://jsfiddle.net/z13au9t6/

问题: 虽然将 maxDate 设置为 18 年前是可行的,但我现在不能 select 低于 1990 年和高于 8 月的月份。

使用年份范围 属性,将月份和日期设置为年末以超过八月

var maxBirthdayDate = new Date();
maxBirthdayDate.setFullYear( maxBirthdayDate.getFullYear() - 18,11,31);
$( "#datepicker" ).datepicker({
    dateFormat: 'dd.mm.yy',
    changeMonth: true,
    changeYear: true,
    maxDate: maxBirthdayDate,
  yearRange: '1950:'+maxBirthdayDate.getFullYear(),
});

demo

设置 yearRange 属性 以及:

yearRange: '-100:+100',

它会将年份范围设置为-100 年和+100 年。所以你可以 select 前 100 年。

要实现这一点,您可以使用 yearRange。为了使维护更容易,您可以通过在格式字符串中使用 c 字符来使用相对于当前日期的范围,如下所示:

$("#datepicker").datepicker({
  dateFormat: 'dd.mm.yy',
  changeMonth: true,
  changeYear: true,
  yearRange: '-99:-18'
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" />
<input type="text" name="date" id="datepicker" autocomplete="off">