78

使用 jQuery 日期选择器,如何更改显示的年份范围?在 jQuery UI 网站上,它说默认值为“显示当前年份前后 10 年”。我想用它来选择生日,而在今天之前的 10 年并不好。这可以用 jQuery datepicker 完成还是我必须使用不同的解决方案?

日期选择器演示链接:http: //jqueryui.com/demos/datepicker/#dropdown-month-year

4

8 回答 8

165

如果您稍微向下看一下演示页面,您会看到“限制日期选择器”部分。使用下拉菜单指定“ 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什么)。

于 2008-11-06T17:36:16.283 回答
40

为什么不显示年份或月份选择框?

$( ".datefield" ).datepicker({
    changeMonth: true,
    changeYear: true,
    yearRange:'-90:+0'
});
于 2010-11-01T11:32:36.453 回答
10

没有人提出的是您还可以设置硬编码的日期范围:

例如:

yearRange: "1901:2012"

虽然建议不要这样做,但它是一个完全有效的选项(如果您在目录中合法地寻找特定年份 - 例如 "1963:1984" ,则很有用)。

于 2012-07-31T06:19:51.823 回答
6

完美的出生日期字段(以及我使用的)类似于 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"
});

希望未来的谷歌人发现这很有用:)。

于 2013-04-12T00:31:19.133 回答
5

除了@Shog9 发布的内容之外,您还可以在 beforeShowDay: 回调函数中单独限制日期。

您提供一个接受日期并返回布尔数组的函数:

"$(".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, '']; 
} 
于 2008-11-06T17:41:04.153 回答
3
 $("#DateOfBirth").datepicker({
        yearRange: "-100:+0",
        changeMonth: true,
        changeYear: true,
    });

yearRange: '1950:2013', // 指定硬编码的年份范围或这种方式

yearRange: "-100:+0", // 过去一百年

这将有助于显示年份和月份选择的下拉菜单。

于 2014-02-12T11:19:57.257 回答
2

au、nz、ie 等是显示国庆日的国家/地区的国家代码(澳大利亚、新西兰、爱尔兰...)。从代码中可以看出,这些值与 '_day' 组合并传递回以作为 CSS 样式应用于当天。相应的样式如下所示,它将当天的文本移到一边,并用国旗图像替换它。

.au_day {
  text-indent: -9999px;
  background: #eee url(au.gif) no-repeat center;
}

用新样式传回的 'false' 值表示这些天可能不会被选中。

于 2009-01-07T05:26:08.987 回答
1

我认为这也可以

$(function () {
    $(".DatepickerInputdob").datepicker({
        dateFormat: "d M yy",
        changeMonth: true,
        changeYear: true,
        yearRange: '1900:+0',
        defaultDate: '01 JAN 1900'
    });
于 2014-05-15T11:55:39.193 回答