• JQuery easyUI 日期格式化,只显示年或年月


    一、问题描述: jquery easyui 本身不支持只显示年

    二、解决方案:

    1、增加格式化方法及解析方法

    formatter:yearFormatter,parser:yearParser

    如下面所示

    /* 年度日历HTML代码: */
    <input id="attYear" class="easyui-datebox" name="attYear" data-options="formatter:yearFormatter,parser:yearParser" />
    

    2、增加yearFormatter,yearParser的js方法

    /* 年度日历JS代码 */
    $(function() {
    	var curr_time = new Date();
    	var strDate = curr_time.getFullYear();
    	$("#attYear").datebox("setValue", strDate);
    });
    function yearFormatter(date){  
        var y = date.getFullYear();  
        return y;  
    }; 
    function yearParser(s){  
        if (!s) return new Date();  
        var y = s;  
        var date;  
        if (!isNaN(y)){  
            return new Date(y,0,1);  
        } else {  
            return new Date();  
        }  
    };
    

    运行效果:

    这样就能成功只显示年份。插件展开显示的还是到日


    一、问题描述: jquery easyui 只显示到月

    二、解决方案:

    1、增加格式化方法及解析方法

    formatter:yearFormatter,parser:yearParser

    如下面所示

    /* 月度日历HTML代码 */
    <input id="attYearMonth" class="easyui-datebox" name="attYearMonth"/>
    

    2、增加yearFormatter,yearParser的js方法

    /* 月度日历JS代码 */
    $(function() {
    
       $('#attYearMonth').datebox({
           //显示日趋选择对象后再触发弹出月份层的事件,初始化时没有生成月份层
           onShowPanel: function () {
              //触发click事件弹出月份层
              span.trigger('click'); 
              if (!tds)
                //延时触发获取月份对象,因为上面的事件触发和对象生成有时间间隔
                setTimeout(function() { 
                    tds = p.find('div.calendar-menu-month-inner td');
                    tds.click(function(e) {
                       //禁止冒泡执行easyui给月份绑定的事件
                       e.stopPropagation(); 
                       //得到年份
                       var year = /d{4}/.exec(span.html())[0] ,
                       //月份
                       //之前是这样的month = parseInt($(this).attr('abbr'), 10) + 1; 
                       month = parseInt($(this).attr('abbr'), 10);  
    
             //隐藏日期对象                     
             $('#attYearMonth').datebox('hidePanel') 
               //设置日期的值
               .datebox('setValue', year + '-' + month); 
                            });
                        }, 0);
                },
                //配置parser,返回选择的日期
                parser: function (s) {
                    if (!s) return new Date();
                    var arr = s.split('-');
                    return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, 1);
                },
                //配置formatter,只返回年月 之前是这样的d.getFullYear() + '-' +(d.getMonth()); 
                formatter: function (d) { 
                    var currentMonth = (d.getMonth()+1);
                    var currentMonthStr = currentMonth < 10 ? ('0' + currentMonth) : (currentMonth + '');
                    return d.getFullYear() + '-' + currentMonthStr; 
                }
            });
    
            //日期选择对象
            var p = $('#attYearMonth').datebox('panel'), 
            //日期选择对象中月份
            tds = false, 
            //显示月份层的触发控件
            span = p.find('span.calendar-text'); 
            var curr_time = new Date();
    
            //设置前当月
            $("#attYearMonth").datebox("setValue", myformatter(curr_time));
    });
    

    3、myformatter函数:

    //格式化日期
    function myformatter(date) {
        //获取年份
        var y = date.getFullYear();
        //获取月份
        var m = date.getMonth() + 1;
        return y + '-' + m;
    }
    

    运行效果:

  • 相关阅读:
    【代码片段】Qt6.2.4 C++ 获取目录与排除指定文件夹
    C++中指针理解
    【代码片段】Qt6.2.4 获取文件 MD5
    【转载】 Qt6.2.4 打包应用及解决 dll 不存在的问题
    ck集群安装问题
    k8s安装prometheusoperator监控
    ansible的playbook执行流程分析
    CDH搭建示例
    k8s安装ck集群
    ckman安装步骤
  • 原文地址:https://www.cnblogs.com/xianyao/p/12595343.html
Copyright © 2020-2023  润新知