jQuery UI:Datepicker将年份范围下拉到100年

使用dateselect器,默认情况下,只显示10年。 用户必须点击去年才能获得更多年份。

我们如何将初始范围设置为100年,以便用户默认看到一个大的列表?

在这里输入图像说明

function InitDatePickers() { $(".datepicker").datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, maxDate: '@maxDate', minDate: '@minDate' }); } 

您可以使用此选项设置年份范围,每个文档在这里http://api.jqueryui.com/datepicker/#option-yearRange

 yearRange: '1950:2013', // specifying a hard coded year range 

或者这样

 yearRange: "-100:+0", // last hundred years 

从文档

默认:“c-10:c + 10”

当年显示的年份范围下拉:相对于当前select的年份(“c-nn:c + nn”),绝对值(“nnnn: nnnn“)或这些格式的组合(”nnnn:-nn“)。 请注意,此选项仅影响下拉菜单中显示的内容,以限制可以使用minDate和/或maxDate选项select哪些date。

这对我来说是完美的。

ChangeYear: –设置为true时,表示可以select当前日历中指示的上个月或下个月的单元格。 此选项与options.showOtherMonths设置为true一起使用。

YearRange:指定年份下拉的年份范围。 (默认值:“-10:+10”)

例:-

 $(document).ready(function() { $("#date").datepicker({ changeYear:true, yearRange: "2005:2015" }); }); 

请参阅: – 在jquery datepicker中设置年份范围

请使用下面的代码

  $( "#datepicker" ).datepicker({ changeMonth: true, changeYear: true, yearRange: "-50:+0"}); 

我们可以用+或 – 唱来增加或减less年份。

请在下面查看完整的DEMO链接

DEMO

我做到了这一点:

 var dateToday = new Date(); var yrRange = dateToday.getFullYear() + ":" + (dateToday.getFullYear() + 50); and then yearRange : yrRange 

其中50是今年的范围。

提出这个问题的时间有点迟,因为原来的问题已经发布多久了,但是这是我所做的。

我需要一个70年的时间,虽然不到100年,但对于访问者来说还是太多年了。 (jQuery一年一组,但是这对大多数人来说是痛苦的。)

第一步是修改datepicker小部件的JavaScript:在jquery-ui.js或jquery-ui-min.js(它将被最小化)中find这个代码:

 for (a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+ a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++) a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>"; a.yearshtml+="</select>"; 

并将其replace为:

 a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+ ".datepicker._selectMonthYear('#"+a.id+"', this, 'Y'); \" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"'); \">"; for(opg=-1;b<=g;b++) { a.yearshtml+=((b%10)==0 || opg==-1 ? (opg==1 ? (opg=0, '</optgroup>') : '')+ (b<(g-10) ? (opg=1, '<optgroup label="'+b+' >">') : '') : '')+ '<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>"; } a.yearshtml+="</select>"; 

这与OPTGROUP标签围绕了几十年(当前除外)。

接下来,将其添加到您的CSS文件中:

 .ui-datepicker OPTGROUP { font-weight:normal; } .ui-datepicker OPTGROUP OPTION { display:none; text-align:right; } .ui-datepicker OPTGROUP:hover OPTION { display:block; } 

这隐藏了几十年,直到访客在基准年以上。 您的访客可以快速浏览任何年份。

随意使用这个; 只需在您的代码中给出正确的归属。

我想实现dateselect器来select出生date,我有麻烦改变yearRange因为它似乎不工作与我的版本(1.5)。 我更新到这里最新的jquery-ui datepicker版本: https : //github.com/uxsolutions/bootstrap-datepicker 。

然后我发现他们提供了这个非常有帮助的即时工具,所以你可以configuration你的整个dateselect器,看看你有什么设置使用。

这就是我发现的select

defaultViewDate

是我正在寻找的选项,我没有find任何searchnetworking的结果。

所以对于其他用户:如果你还想提供datepicker来更改生日,我build议使用这个代码选项:

 $('#birthdate').datepicker({ startView: 2, maxViewMode: 2, daysOfWeekHighlighted: "1,2", defaultViewDate: { year: new Date().getFullYear()-20, month: 01, day: 01 } }); 

当打开dateselect器时,您将从视图开始select相对于当前年份20年前的年份。