birthday.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. (function($){
  2. $.extend({
  3. ms_DatePicker: function (options) {
  4. var defaults = {
  5. YearSelector: "#sel_year",
  6. MonthSelector: "#sel_month",
  7. DaySelector: "#sel_day",
  8. FirstText: "--",
  9. FirstValue: 0
  10. };
  11. var opts = $.extend({}, defaults, options);
  12. var $YearSelector = $(opts.YearSelector);
  13. var $MonthSelector = $(opts.MonthSelector);
  14. var $DaySelector = $(opts.DaySelector);
  15. var FirstText = opts.FirstText;
  16. var FirstValue = opts.FirstValue;
  17. // 初始化
  18. var str = "<option value=\"" + FirstValue + "\">" + FirstText + "</option>";
  19. $YearSelector.html(str);
  20. $MonthSelector.html(str);
  21. $DaySelector.html(str);
  22. // 年份列表
  23. var yearNow = new Date().getFullYear();
  24. var yearSel = $YearSelector.attr("rel");
  25. for (var i = yearNow; i >= 1900; i--) {
  26. var sed = yearSel==i?"selected":"";
  27. var yearStr = "<option value=\"" + i + "\" " + sed+">" + i + "</option>";
  28. $YearSelector.append(yearStr);
  29. }
  30. // 月份列表
  31. var monthSel = $MonthSelector.attr("rel");
  32. for (var i = 1; i <= 12; i++) {
  33. var sed = monthSel==i?"selected":"";
  34. var monthStr = "<option value=\"" + i + "\" "+sed+">" + i + "</option>";
  35. $MonthSelector.append(monthStr);
  36. }
  37. // 日列表(仅当选择了年月)
  38. function BuildDay() {
  39. if ($YearSelector.val() == 0 || $MonthSelector.val() == 0) {
  40. // 未选择年份或者月份
  41. $DaySelector.html(str);
  42. } else {
  43. $DaySelector.html(str);
  44. var year = parseInt($YearSelector.val());
  45. var month = parseInt($MonthSelector.val());
  46. var dayCount = 0;
  47. switch (month) {
  48. case 1:
  49. case 3:
  50. case 5:
  51. case 7:
  52. case 8:
  53. case 10:
  54. case 12:
  55. dayCount = 31;
  56. break;
  57. case 4:
  58. case 6:
  59. case 9:
  60. case 11:
  61. dayCount = 30;
  62. break;
  63. case 2:
  64. dayCount = 28;
  65. if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
  66. dayCount = 29;
  67. }
  68. break;
  69. default:
  70. break;
  71. }
  72. var daySel = $DaySelector.attr("rel");
  73. for (var i = 1; i <= dayCount; i++) {
  74. var sed = daySel==i?"selected":"";
  75. var dayStr = "<option value=\"" + i + "\" "+sed+">" + i + "</option>";
  76. $DaySelector.append(dayStr);
  77. }
  78. }
  79. }
  80. $MonthSelector.change(function () {
  81. BuildDay();
  82. });
  83. $YearSelector.change(function () {
  84. BuildDay();
  85. });
  86. if($DaySelector.attr("rel")!=""){
  87. BuildDay();
  88. }
  89. } // End ms_DatePicker
  90. });
  91. })(jQuery);