Đây là một chút muộn trong ngày để gợi ý điều này, được đưa ra cách đây bao lâu câu hỏi ban đầu đã được đăng, nhưng đây là những gì tôi đã làm.
Tôi cần một phạm vi 70 năm, trong khi, không quá 100, vẫn còn quá nhiều năm để khách truy cập cuộn qua. (jQuery thực hiện từng năm theo nhóm, nhưng đó là một nỗi đau trong hầu hết mọi người.)
Bước đầu tiên là sửa đổi JavaScript cho tiện ích datepicker: Tìm mã này trong jquery-ui.js hoặc jquery-ui-min.js (nơi nó sẽ được thu nhỏ):
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>";
Và thay thế nó bằng cái này:
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>";
Điều này bao quanh các thập kỷ (ngoại trừ hiện tại) với các thẻ OPTGROUP.
Tiếp theo, thêm phần này vào tệp CSS của bạn:
.ui-datepicker OPTGROUP { font-weight:normal; }
.ui-datepicker OPTGROUP OPTION { display:none; text-align:right; }
.ui-datepicker OPTGROUP:hover OPTION { display:block; }
Điều này che giấu các thập kỷ cho đến khi các vị khách truy cập trong năm cơ sở. Khách truy cập của bạn có thể cuộn qua bất kỳ số năm nhanh chóng.
Hãy sử dụng cái này; chỉ xin vui lòng ghi công thích hợp trong mã của bạn.