禁用 JQueryUI DatePicker 的年份

Disable year for JQueryUI DatePicker

我正试图从我的 "YearPicker?" 中禁用年份,它是一个 DatePicker,您只能在其中选择年份。我需要禁用所有年份并仅启用一定范围的年份(例如,从 2012 年到现在)。

我正在使用 JQueryUI DatePicker,它看起来像这样:

CSS:

<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
   <style>
        .ui-datepicker-calendar {
            display: none;
        }        
    </style>

JS:

<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
    $( function() {
        $('#datepicker').datepicker({
            viewMode: 2,
            format: 'yyyy',
            maxDate: new Date(new Date().getFullYear(), 11, 31),
            minDate: new Date(2012, 0, 1)
        });
    })
</script>

HTML:

<label>Year: <input class="form-control" type="text" id="datepicker"></label>

您可以使您正在做的工作发挥作用,但我认为这比需要的工作要多一些。我建议也许考虑改用自动完成。看一看:

$(function() {
  $("#datepicker").autocomplete({
    minLength: 0,
    source: function(req, resp) {
      var today = new Date();
      var min = today.getFullYear() - 6;
      // Adjust above as needed, currently 6 years before this year
      var results = [];
      for (min; min <= today.getFullYear(); min++) {
        results.push(min.toString());
      }
      resp(results)
    }
  }).focus(function(e) {
    $(e.target).autocomplete("search", "");
  });
})
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<label>Year: <input class="form-control" type="text" id="datepicker" data-years="6"></label>

如果需要也可以将其移动到它自己的函数中。

var function makeYearList(n){
  var today = new Date();
  var min = today.getFullYear() - n;
  var results = [];
  for (min; min <= today.getFullYear(); min++) {
    results.push(min.toString());
  }
  return results;
}

您还可以调整主题以水平而非垂直列出它们。

希望对您有所帮助。

已解决!我正在导入 Bootstrap DatePicker 和 JQueryUI DatePicker,我以为我只使用了第二个,但应用程序只检测到第一个,我现在的代码是这样的并且可以工作:

$('#datepicker').datepicker({
                    minViewMode: 2,
                    format: 'yyyy',
                    startDate: '2012',
                    endDate: 'y'
                });

感谢大家的帮助!

您也可以指定简单的字符串来实现所需的格式:

{
    format: 'MM/yyyy',
    startDate: '01/2022',
    endDate: '12/2022',
}