考虑到最初的问题是多久前发布的,所以提出这个建议有点晚了,但这就是我所做的。
我需要一个 70 年的范围,虽然没有 100 年多,但对于访问者来说仍然太多年滚动浏览。(jQuery 确实以组为单位进行了一年,但对于大多数人来说,这是一种痛苦。)
第一步是修改 datepicker 小部件的 JavaScript:在 jquery-ui.js 或 jquery-ui-min.js 中找到此代码(它将被最小化):
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>";
并将其替换为:
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; }
这隐藏了几十年,直到访问者将鼠标悬停在基准年上。您的访问者可以快速滚动任意年数。
随意使用它;请在您的代码中给出适当的归属。