基于jQuery下拉两级联动select

之前参照那篇博客弄的忘记了,记录下:

js代码:

$(function() {
$.ms_DatePicker({
YearSelector : ".sel_year",
MonthSelector : ".sel_month",
DaySelector : ".sel_day"
});
$.ms_DatePicker();
});


(function($) {
$.extend({
ms_DatePicker : function(options) {
var defaults = {
YearSelector : "#sel_year",
MonthSelector : "#sel_month",
DaySelector : "#sel_day",
FirstText : "--",
FirstValue : 0
};
var opts = $.extend({}, defaults, options);
var $YearSelector = $(opts.YearSelector);
var $MonthSelector = $(opts.MonthSelector);
var $DaySelector = $(opts.DaySelector);
var FirstText = opts.FirstText;
var FirstValue = opts.FirstValue;


// 初始化
var str = "<option value=\"" + FirstValue + "\">" + FirstText
+ "</option>";
$YearSelector.html(str);
$MonthSelector.html(str);
$DaySelector.html(str);


// 年份列表
var yearNow = new Date().getFullYear();
var yearSel = $YearSelector.attr("rel");
for (var i = yearNow; i >= 1900; i--) {
var sed = yearSel == i ? "selected" : "";
var yearStr = "<option value=\"" + i + "\" " + sed + ">" + i
+ "</option>";
$YearSelector.append(yearStr);
}


// 月份列表
var monthSel = $MonthSelector.attr("rel");
for (var i = 1; i <= 12; i++) {
var sed = monthSel == i ? "selected" : "";
var monthStr = "<option value=\"" + i + "\" " + sed + ">" + i
+ "</option>";
$MonthSelector.append(monthStr);
}


// 日列表(仅当选择了年月)
function BuildDay() {
if ($YearSelector.val() == 0 || $MonthSelector.val() == 0) {
// 未选择年份或者月份
$DaySelector.html(str);
} else {
$DaySelector.html(str);
var year = parseInt($YearSelector.val());
var month = parseInt($MonthSelector.val());
var dayCount = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dayCount = 31;
break;
case 4:
case 6:
case 9:
case 11:
dayCount = 30;
break;
case 2:
dayCount = 28;
if ((year % 4 == 0) && (year % 100 != 0)
|| (year % 400 == 0)) {
dayCount = 29;
}
break;
default:
break;
}


var daySel = $DaySelector.attr("rel");
for (var i = 1; i <= dayCount; i++) {
var sed = daySel == i ? "selected" : "";
var dayStr = "<option value=\"" + i + "\" " + sed + ">"
+ i + "</option>";
$DaySelector.append(dayStr);
}
}
}
$MonthSelector.change(function() {
BuildDay();
});
$YearSelector.change(function() {
BuildDay();
});
if ($DaySelector.attr("rel") != "") {
BuildDay();
}
} // End ms_DatePicker
});
})(jQuery);



html代码

<select style="width: 60px" name="birth_year" id="sel_year" rel="1987"></select>&nbsp;年&nbsp;&nbsp;
<select style="width: 50px" name="birth_month" id="sel_month"></select>&nbsp;月&nbsp;&nbsp;

<!-- <select style="width: 50px" id="sel_day"></select>&nbsp;日 -->

或者:

<select style="width: 60px" name="grad_year" class="sel_year" rel="1987"></select>&nbsp;年&nbsp;&nbsp;
<select style="width: 50px" name="grad_month" class="sel_month"></select>&nbsp;月&nbsp;&nbsp;

(若需加载多个选择框,如入学时间,毕业时间,就业时间等,可使用class=“xxx”)

猜你喜欢

转载自blog.csdn.net/woweipingzui/article/details/50582096