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;
}

運行效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM