zoukankan      html  css  js  c++  java
  • jquery模拟生日日期下拉选择框

    现在有很多关于日期的插件,但是都是年、月、日以日历的形式出现,我在项目有需求是日期以下拉框的形式完成。如图:

    //HTML代码如下;
          <div class="phone_mation">
                  <div class="weui-cell__hd" id="birth">
                    <label class="weui-label"><span>* </span>生日</label>
                    <div class="birth-r">
                      <div class="year">
                        <select id="date-sel-year" rel="1985" class="cx_nd"></select>
                      </div>
                      <div class="year">
                        <select id="date-sel-month" rel="10" class="cx_nd"></select>
                      </div>
                      <div class="year">
                        <select id="date-sel-day" rel="01" class="cx_nd"></select>
                      </div>
                    </div>
                  </div>
                </div>
    
    
    
    //需要引入插件:
       // 出生年月插件
        $.date_picker({
              YearSelector:  "#date-sel-year",
              MonthSelector: "#date-sel-month",
              DaySelector:   "#date-sel-day"
        });


    插件代码:在html文件引入这个js文件和jquery文件即可;

    (function($){
        $.extend({
            date_picker: 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 monthStr=null;
                    var sed = monthSel==i?"selected":"";
                    if(i<10){
                        monthStr="<option value="" + i + "" "+sed+">" + '0' +i + "</option>";
                    }else{
                        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 dayStr=null;
                            var sed = daySel==i?"selected":"";
                            if(i<10){
                                // dayStr = "<option value="" + i + "" "+sed+">" + +'0'+i + "</option>";
                                dayStr =`<option value=i ${sed}>0${i}</option>`
    
                            }else{
                                // dayStr = "<option value="" + i + "" "+sed+">" + i + "</option>";
                                dayStr =`<option value=i ${sed}>${i}</option>`
                            }
                            $DaySelector.append(dayStr);
                        }
                    }
                }
                $MonthSelector.change(function () {
                    BuildDay();
                });
                $YearSelector.change(function () {
                    BuildDay();
                });
                if($DaySelector.attr("rel")!=""){
                    BuildDay();
                }
            }
        });
    })(jQuery);
  • 相关阅读:
    python 生成白画布,黑画布和指定颜色画布(纯白色图片或黑色图片或纯色图片)(python generate white, black or pure color canva)
    tomcat启动出现乱码
    nicstat命令安装与使用
    sar命令详解【转】
    使用 virtualBox 让虚拟机连接外网
    跟面试官侃半小时MySQL事务,说完原子性、一致性、持久性的实现【转】
    jmeter的HTML Link Parser链路解析器的使用方法
    Jmeter导入badboy的jmx文件后,使用后置处理器的正则表达式提取器提取URL论坛板块ID失败
    Jforum中文版本不能发帖的问题
    部署JForum 2.1.9安装时遇到的问题:报错数据库问题
  • 原文地址:https://www.cnblogs.com/shiraly/p/12401081.html
Copyright © 2011-2022 走看看