做時間插件的時候,很多都會遇到要做選擇月份的插件,但是DCalendar提供的api只支持日期選擇,最近遇到這個問題,所以調整了一下源碼,話不多說,先看效果吧
點擊日期插件,出現上圖,再點擊月份就直接完成時間選擇。
說一下,原來DCalendar是點擊出現
所以首先增加一個option;
把原來的
this.viewMode = 'days';
改為
this.viewMode = options.viewMode?options.viewMode:'days';
這樣,就完成了這個效果;
其次,時間插件還要求點擊到幾號才完成時間選擇。
所以,我們修改為點擊月份后就完成時間選擇。
this.calendar.on('click', '.month', function(e){ var curr = new Date(that.date), y = that.calendar.find('#currM').text(); curr.setMonth($(e.currentTarget).attr('num')); that.date = curr; if(that.options.format=='yyyy-mm'){ that.create(that.viewMode); var cmonth = that.date.getMonth()+1, cyear = that.date.getFullYear(), selected = new Date(cyear, cmonth - 1, '1'); that.selected = cmonth + '/' + '1' + '/' + cyear; that.selectDate(); }else{ that.viewMode = 'days'; that.create(that.viewMode); } });
因為幾號不重要所以我初始化為1號,而且為了不影響原有功能,我在format=='yyyy-mm'才給做直接選出時間的處理。
初始化方法:
$('#mydatepicker').dcalendarpicker({ format: 'yyyy-mm', viewMode : 'months' });
就這樣,我們簡單完成一個插件改造功能。