如何在extjs datefield或datepicker中访问change month事件

时间:2012-07-08 11:46:37

标签: events extjs datepicker listener

我想要这样的事情:

{
  xtype:'datefield',
  editable:false,
  fieldLabel:'date',
  listeners:{
    monthChange:function(picker){
      alert("selected month and year")
    }
  }
}

是否有任何月份变更事件?如果没有,我该怎么写呢?

由于

2 个答案:

答案 0 :(得分:2)

这是扩展'Ext.date.Picker'的示例,因为没有'monthchange'事件:

Ext.define("YourCalendarPicker", {
    extend: "Ext.picker.Date",
    ...
    update : function(date, forceRefresh){
        var me = this,
            monthViewChange = me.isAnotherMonthView(date);
        me.callParent(arguments);
        if (monthViewChange){
            me.fireEvent("monthviewchange", me, date, me.activeDate);
        }
        return me;
    },
    ...

    /**
     * return true if the given date is in a different month view of the actual calendar date
     * @param {Date} date
     * @return {Boolean}
     */
    isAnotherMonthView: function(date){
        var activeDate = this.activeDate || date;
        return date.getYear() != activeDate.getYear() || date.getMonth() != activeDate.getMonth();
    }
};

答案 1 :(得分:1)

确切地说没有一个monthChange事件,但是当有人选择一个新日期时你可以听,那么也许你可以比较月份以查看它是否发生了变化? http://docs.sencha.com/ext-js/4-1/#!/api/Ext.picker.Date-event-select

如果这不是您要解决的问题,那么更多信息会有所帮助。