首先在大神回答中找到了只显示月份的方法
代码如下:
$(function() {
$('#attYearMonth').datebox({
onShowPanel: function() {
span.trigger('click');
if(!tds)
setTimeout(function() {
tds = p.find('div.calendar-menu-month-inner td');
tds.click(function(e) {
e.stopPropagation();
var year = /\d{4}/.exec(span.html())[0],
month = parseInt($(this).attr('abbr'), 10);
$('#attYearMonth').datebox().datebox('calendar').calendar({
validator: function(date) {
var now = new Date();
var d1 = new Date(now.getFullYear(), now.getMonth() - 1, now.getDate());
return d1 >= date;
},
});
//隐藏日期对象
$('#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');
});
function myformatter(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
return y + '-' + m;
};
效果如下:
接下来如何实现十一月及以后的月份都不能被选中不能编辑。
点击事件中去判断,如果大于当前月份,返回false
可以具体提点吗?谢谢
我这个代码里已经实现了本月级以后的不能被编辑:
$('#attYearMonth').datebox().datebox('calendar').calendar({
validator: function(date) {
var now = new Date();
var d1 = new Date(now.getFullYear(), now.getMonth() - 1, now.getDate());
return d1 >= date;
},
});
但是EasyUi它只能给日期添加不能被选中也就是灰色的样式,月份并没有实现。