Как изменить отображаемый диапазон лет с помощью jQuery datepicker? На сайте jQuery UI указано, что по умолчанию «показаны 10 лет до и после текущего года». Я хочу использовать это для выбора дня рождения, и за 10 лет до сегодняшнего дня это не годится. Можно ли это сделать с помощью jQuery datepicker или мне придется использовать другое решение?
ссылка на демо datepicker: http://jqueryui.com/demos/datepicker/#dropdown-month-year

Если вы немного посмотрите на демонстрационную страницу, вы увидите раздел «Ограничение Datepicker». Используйте раскрывающийся список, чтобы указать демонстрацию "Year dropdown shows last 20 years", и выберите источник просмотра:
$("#restricting").datepicker({
yearRange: "-20:+0", // this is the option you're looking for
showOn: "both",
buttonImage: "templates/images/calendar.gif",
buttonImageOnly: true
});
Вы захотите сделать то же самое (очевидно, заменив -20 на -100 или что-то в этом роде).
Я пытаюсь использовать это, но он показывает только -20 лет от текущей даты выбранный ...?
Вы также можете использовать c вместо +0, поэтому yearRange: "-20:c",
Добавляя к тому, что опубликовал @ Shog9, вы также можете ограничивать даты индивидуально в функции beforeShowDay: callback.
Вы предоставляете функцию, которая принимает дату и возвращает логический массив:
"$(".selector").datepicker({ beforeShowDay: nationalDays})
natDays = [[1, 26, 'au'], [2, 6, 'nz'], [3, 17, 'ie'], [4, 27, 'za'],
[5, 25, 'ar'], [6, 6, 'se'], [7, 4, 'us'], [8, 17, 'id'], [9, 7,
'br'], [10, 1, 'cn'], [11, 22, 'lb'], [12, 12, 'ke']];
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1 && date.getDate() ==
natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
return [true, ''];
}
что не так с подсветкой синтаксиса здесь? а в чем дело с национальными днями? Я не понимаю ваш код, извините, не могли бы вы уточнить?
au, nz и т. д. - это коды стран, в которых отображаются национальные дни (Австралия, Новая Зеландия, Ирландия, ...). Как видно из кода, эти значения объединяются с _day и передаются обратно для применения к этому дню как стиль CSS. Соответствующие стили имеют форму, показанную ниже, которая перемещает текст для этого дня и заменяет его изображением флага страны.
.au_day {
text-indent: -9999px;
background: #eee url(au.gif) no-repeat center;
}
Значение «false», которое возвращается с новым стилем, указывает на то, что эти дни не могут быть выбраны.
Почему бы не показать поля выбора года или месяца?
$( ".datefield" ).datepicker({
changeMonth: true,
changeYear: true,
yearRange:'-90:+0'
});
наверное должны быть котировки около года диапазона.
это именно то, что я ищу .. спасибо, сэр .. changeMonth, changeYear
Это прекрасный ответ! Спасибо!
никто другой не сказал, что вы также можете установить жестко запрограммированные диапазоны дат:
Например:
yearRange: "1901:2012"
хотя может быть целесообразно этого не делать, однако этот вариант вполне допустим (и полезен, если вы законно ищете, скажем, конкретный год в каталоге - например, «1963: 1984»).
Идеально подходит для полей даты рождения (и того, что я использую), аналогично тому, что сказал Shog9, хотя я собираюсь привести более конкретный пример DOB:
$(".datePickerDOB").datepicker({
yearRange: "-122:-18", //18 years or older up to 122yo (oldest person ever, can be sensibly set to something much smaller in most cases)
maxDate: "-18Y", //Will only allow the selection of dates more than 18 years ago, useful if you need to restrict this
minDate: "-122Y"
});
Надеюсь, будущие гуглеры сочтут это полезным :).
Самым старым человеком является Жанна Кальмант, ей было 122 года. Я бы поставил 140, чтобы сохранить запас :)
@ChristopheRoussy Вы правы, я думаю, я думал о самом старом из ныне живущих ... которому сейчас 116 :). Ответ отредактирован.
$("#DateOfBirth").datepicker({
yearRange: "-100:+0",
changeMonth: true,
changeYear: true,
});
yearRange: '1950: 2013', // указываем жестко заданный диапазон года или так
yearRange: "-100: +0", // последние сто лет
Это поможет отобразить раскрывающийся список для выбора года и месяца.
я думаю, это тоже может сработать
$(function () {
$(".DatepickerInputdob").datepicker({
dateFormat: "d M yy",
changeMonth: true,
changeYear: true,
yearRange: '1900:+0',
defaultDate: '01 JAN 1900'
});
Спасибо! Я просмотрел там, но, должно быть, пропустил. Работает отлично.