更改 jQuery datepicker 中不同表单的可选日期,同时保持其他选项相同和 DRY

Change selectable dates in jQuery datepicker for different forms whilst keeping other options the same and DRY

我想做的就是让我的日期选择器代码保持干燥,但我似乎无法让我的更改生效。我有一组通用选项,我想在所有日期选择器中保留这些选项:

var dateToday = new Date(); 
$(".selectdate").datepicker({
    dateFormat: 'd MM yy',
    showOtherMonths: true,
    selectOtherMonths: true
});

但是有些日期选择器我需要 maxDate 选项,而其他一些我需要 minDate 选项,但我无法让它工作。例如:

$("#calldate").datepicker({
    maxDate: dateToday
});

所以我有一个 ID 为 'calldate' 和 class 'selectdate' 的输入字段,我原以为这会起作用,但它不起作用 - 日历显示并设置了所有选项对于 $('.selectdate').... 但 maxDate 不起作用。我不想为我拥有的每个日期选择器重复代码,如下所示:

$("#fromdate").datepicker({
    dateFormat: 'd MM yy',
    showOtherMonths: true,
    selectOtherMonths: true,
    minDate: dateToday
});

$("#calldate").datepicker({
    dateFormat: 'd MM yy',
    showOtherMonths: true,
    selectOtherMonths: true,
    maxDate: dateToday
});

我希望这是有道理的,有人可以帮我排序,谢谢

当您在要应用 more/different 选项的元素上调用 .datepicker() 时,您可以使用 $.datepicker.setDefaults() 然后 override/add 新选项,如下所示:

$.datepicker.setDefaults({
    dateFormat: 'd MM yy',
    showOtherMonths: true,
    selectOtherMonths: true
});

$('#fromdate').datepicker();
$('#calldate').datepicker({ minDate: 0 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>


<label>#calldate
  <input type="text" id="calldate" min='0'/>
</label>
<label>#fromdate
  <input type="text" id="fromdate"/>
</label>