jQuery datepicker显示年份

问题描述:

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

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

如果你看不起演示页一点,你会看到一个“限制日期选择器”一节。使用下拉菜单指定“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或东西)。

+0

谢谢!我看过那里,但一定错过了它。它完美的作品。 – 2008-11-06 17:39:59

+1

我正在尝试使用此功能,但它仅显示从当前_selected_日期起的-20年...? – ajbeaven 2010-04-02 22:47:53

+5

你也可以用`c`代替`+ 0`,所以`yearRange:“-20:c”,` – Kokos 2011-05-30 09:56:23

添加到@ 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, '']; 
} 

澳大利亚,新西兰,IE等是其国民天正在显示(澳大利亚,新国家的国家代码新西兰,爱尔兰......)。如代码所示,这些值与“_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' 
}); 

什么没有其他人提出的是,你还可以设置硬编码的日期范围:

例如:

yearRange: "1901:2012" 

虽然它可能是明智的没有做到这一点,然而,这是一个完全有效的选项(如果你正在寻找某个目录中的特定年份 - 比如“1963:1984”),这个选项很有用。

完美出生场(和我使用)的日期是类似于Shog9说,虽然我要给一个更具体的出生日期例如:

$(".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" 
}); 

希望未来的Google发现这很有用: )。

$("#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' 
    });