jquery UI datepicker: 从今天开始计算 minDate x 年
jquery UI datepicker: calculate minDate x years from today
下午好
我正在尝试为 jQuery UI 日期选择器设置 minDate,它应该对所有年龄在 12 到 17 岁之间的用户有效。仅使用 maxDate 就可以正常工作。而且我知道我必须以某种方式计算 minDate。我搜索了所有其他 Whosebug 线程,但未能找到类似的内容。我找到的其他解决方案设置了固定日期,但与今天相比,我总是需要 12-17 年。
到目前为止我尝试过的:
minDate: new Date((currentYear - 12), currentMonth, currentDay))
和
minDate: "-12y"
我目前的样本:
$(".datepicker").datepicker({
numberOfMonths: 1,
firstDay: 1,
defaultDate: 0,
changeMonth: true,
changeYear: true,
yearRange: '1910:c',
dateFormat: 'dd.mm.yy',
beforeShow: function () {
var currentYear = (new Date).getFullYear();
var currentMonth = (new Date).getMonth() + 1;
var currentDay = (new Date).getDate();
$(this).datepicker({
minDate: new Date((currentYear - 12), currentMonth, currentDay),
maxDate: "-17y -11m -30d"
});
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet"/>
<input type="text" class="datepicker" id="myDate">
minDate: "-12y"
工作得很好,但是如果你只想允许 12 到 17 岁之间的年龄,你需要同时使用 minDate
和 maxDate
来设置允许的范围。
因此,您对 onBeforeShow()
以及 numberOfMonths
、defaultDate
和 yearRange
的使用是多余的。试试这个:
$(".datepicker").datepicker({
firstDay: 1,
changeMonth: true,
changeYear: true,
dateFormat: 'dd.mm.yy',
minDate: '-17y', // min 17 years ago
maxDate: '-12y', // max 12 years ago
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
<input type="text" class="datepicker" id="myDate">
下午好
我正在尝试为 jQuery UI 日期选择器设置 minDate,它应该对所有年龄在 12 到 17 岁之间的用户有效。仅使用 maxDate 就可以正常工作。而且我知道我必须以某种方式计算 minDate。我搜索了所有其他 Whosebug 线程,但未能找到类似的内容。我找到的其他解决方案设置了固定日期,但与今天相比,我总是需要 12-17 年。
到目前为止我尝试过的:
minDate: new Date((currentYear - 12), currentMonth, currentDay))
和
minDate: "-12y"
我目前的样本:
$(".datepicker").datepicker({
numberOfMonths: 1,
firstDay: 1,
defaultDate: 0,
changeMonth: true,
changeYear: true,
yearRange: '1910:c',
dateFormat: 'dd.mm.yy',
beforeShow: function () {
var currentYear = (new Date).getFullYear();
var currentMonth = (new Date).getMonth() + 1;
var currentDay = (new Date).getDate();
$(this).datepicker({
minDate: new Date((currentYear - 12), currentMonth, currentDay),
maxDate: "-17y -11m -30d"
});
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet"/>
<input type="text" class="datepicker" id="myDate">
minDate: "-12y"
工作得很好,但是如果你只想允许 12 到 17 岁之间的年龄,你需要同时使用 minDate
和 maxDate
来设置允许的范围。
因此,您对 onBeforeShow()
以及 numberOfMonths
、defaultDate
和 yearRange
的使用是多余的。试试这个:
$(".datepicker").datepicker({
firstDay: 1,
changeMonth: true,
changeYear: true,
dateFormat: 'dd.mm.yy',
minDate: '-17y', // min 17 years ago
maxDate: '-12y', // max 12 years ago
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
<input type="text" class="datepicker" id="myDate">