Проблема с полосой прокрутки выпадающего года в jQuery datepicker - PullRequest
18 голосов
/ 29 октября 2010

Я использую средство выбора даты jQuery, чтобы выбрать дату рождения заявителя, но возраст заявителя должен быть ограничен значениями от 21 до 100 лет.

Чтобы сделать выбор относительно простым, я включил выпадающие списки месяца и года, а в Великобритании я его локализовал.

<script type="text/javascript">
$(function () {
    $(".dp1").datepicker({ changeMonth: true, changeYear: true, dateFormat: 'd MM yy', minDate: '-100y', maxDate: '-21y' });
});

Код ASP.NET MVC2 VB.NET для текстового поля выглядит следующим образом:

<%: Html.TextBox("", If(DirectCast(Model, DateTime) = DateTime.MinValue, String.Empty, ViewData.TemplateInfo.FormattedModelValue), New With {.class = "dp1"})%>

Все в порядке, но раскрывающийся список года показывает только ограниченный диапазон значений и отсутствует полоса прокрутки, указывающая, что списоклет больше, но размер ползунка полосы прокрутки не дает никаких визуальных подсказок по всему диапазону:

alt text

Если вы нажмете на верхнее значение, а затем позвольтезакрыть раскрывающийся список, при следующем открытии появятся другие значения:

alt text

Это неочевидное поведение, и я наткнулся на него только случайно.Есть ли способ заставить полосу прокрутки появляться постоянно и с размером ползунка, обратно пропорционального диапазону?А если нет, то какие другие методы выбора даты, начиная с века (на самом деле 99 лет было бы хорошо), рекомендуются?

Для записи, которую я использую:

  • jquery-ui-1.8.5
  • jquery-1.4.1

Спасибо

Crispin

Ответы [ 2 ]

26 голосов
/ 30 октября 2010

Попробуйте также установить параметр yearRange (который задает диапазон лет в выпадающем списке года).Вы можете установить его как yearRange: "-100: -21" .Обратите внимание, что установка только yearRange не влияет на фактические даты, которые пользователь может выбрать (вам все еще нужно установить minDate и maxDate).

7 голосов
/ 22 августа 2014

Следующее установит диапазон года с 1970 по текущий год, а также решит проблему с прокруткой.

.datepicker({yearRange: "1970:+nn"});

...