生日选择器

来源:互联网 发布:linux php ext 目录 编辑:程序博客网 时间:2024/05/21 19:43

生日中的年月日以<select>下拉方式,我们给每个select加个rel属性,当已知用户生日日期的,直接通过rel属性标注,插件会将rel属性值转换成select的值。

<label> 生日:</label>  
<select class="sel_year" rel="2000"> </select> 年 
<select class="sel_month" rel="2"> </select> 月 
<select class="sel_day" rel="14"> </select> 日 
加载jQuery库和选择器插件:

<script src="jquery.js"></script> 
<script src="birthday.js"></script> 
我们将选择器封装成jQuyer插件的形式,只需使用以下方式调用即可:

$(function () { 
    $.ms_DatePicker({ 
            YearSelector: ".sel_year"
            MonthSelector: ".sel_month"
            DaySelector: ".sel_day" 
    }); 
}); 
以下是插件的具体代码:

(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); 
来源于helloweba.com并保留原文链接:http://www.helloweba.com/view-blog-263.html

0 0
原创粉丝点击