ext2,3,和4 版本 只显示年月的日期插件

来源:互联网 发布:武汉编程辅导班 编辑:程序博客网 时间:2024/06/06 13:17

ext2,3,和4 版本 只显示年月的日期插件

1:ext3版本插件

来自官方论坛:http://www.sencha.com/forum/showthread.php?74002-3.x-Ext.ux.MonthMenu

 

插件代码:

Java代码  收藏代码
  1. Ext.ux.MonthPickerPlugin = function() {   
  2.     var picker;   
  3.     var oldDateDefaults;   
  4.   
  5.     this.init = function(pk) {   
  6.         picker = pk;   
  7.         picker.onTriggerClick = picker.onTriggerClick.createSequence(onClick);   
  8.         picker.getValue = picker.getValue.createInterceptor(setDefaultMonthDay).createSequence(restoreDefaultMonthDay);   
  9.         picker.beforeBlur = picker.beforeBlur.createInterceptor(setDefaultMonthDay).createSequence(restoreDefaultMonthDay);   
  10.     };   
  11.   
  12.     function setDefaultMonthDay() {   
  13.         oldDateDefaults = Date.defaults.d;   
  14.         Date.defaults.d = 1;   
  15.         return true;   
  16.     }   
  17.   
  18.     function restoreDefaultMonthDay(ret) {   
  19.         Date.defaults.d = oldDateDefaults;   
  20.         return ret;   
  21.     }   
  22.   
  23.     function onClick(e, el, opt) {   
  24.         var p = picker.menu.picker;   
  25.         p.activeDate = p.activeDate.getFirstDateOfMonth();   
  26.         if (p.value) {   
  27.             p.value = p.value.getFirstDateOfMonth();   
  28.         }   
  29.   
  30.         p.showMonthPicker();   
  31.            
  32.         if (!p.disabled) {   
  33.             p.monthPicker.stopFx();   
  34.             p.monthPicker.show();   
  35.   
  36.             p.mun(p.monthPicker, 'click', p.onMonthClick, p);   
  37.             p.mun(p.monthPicker, 'dblclick', p.onMonthDblClick, p);   
  38.             p.onMonthClick = p.onMonthClick.createSequence(pickerClick);   
  39.             p.onMonthDblClick = p.onMonthDblClick.createSequence(pickerDblclick);   
  40.             p.mon(p.monthPicker, 'click', p.onMonthClick, p);   
  41.             p.mon(p.monthPicker, 'dblclick', p.onMonthDblClick, p);   
  42.         }   
  43.     }   
  44.   
  45.     function pickerClick(e, t) {   
  46.         var el = new Ext.Element(t);   
  47.         if (el.is('button.x-date-mp-cancel')) {   
  48.             picker.menu.hide();   
  49.         } else if(el.is('button.x-date-mp-ok')) {   
  50.             var p = picker.menu.picker;   
  51.             p.setValue(p.activeDate);   
  52.             p.fireEvent('select', p, p.value);   
  53.         }   
  54.     }   
  55.   
  56.     function pickerDblclick(e, t) {   
  57.         var el = new Ext.Element(t);   
  58.         if (el.parent()   
  59.             && (el.parent().is('td.x-date-mp-month')   
  60.             || el.parent().is('td.x-date-mp-year'))) {   
  61.   
  62.             var p = picker.menu.picker;   
  63.             p.setValue(p.activeDate);   
  64.             p.fireEvent('select', p, p.value);   
  65.         }   
  66.     }   
  67. };   
  68.   
  69. Ext.preg('monthPickerPlugin', Ext.ux.MonthPickerPlugin);    

 

调用例子:

Java代码  收藏代码
  1. new Ext.form.DateField({  
  2.     renderTo: document.body,  
  3.     plugins:'monthPickerPlugin',  
  4.     name:'rq',  
  5.     format: 'Y-m'  
  6. });  

 

 

2:Ext2版本(测试2.0.2成功)

   

  插件代码见附件

  使用例子:

引入:  <script type="text/javascript" src="DatePicker.js"></script>
  <script type="text/javascript" src="DateField.js"></script>

 

Java代码  收藏代码
  1. {  
  2.                                     xtype : "datefield",  
  3.                                     fieldLabel : "date",  
  4.                                     format:'Y-m'  
  5.                                 }  

 效果图:

 

 

 

 

 

3:Ext4版本  年月插件:

 

Java代码  收藏代码
  1. /** Months picker 
  2.       重写 field.Date 
  3. **/  
  4. Ext.define('Ext.form.field.Month', {  
  5.    extend:'Ext.form.field.Date',  
  6.    alias: 'widget.monthfield',  
  7.    requires: ['Ext.picker.Month'],  
  8.    alternateClassName: ['Ext.form.MonthField''Ext.form.Month'],  
  9.    selectMonth: null,  
  10.    createPicker: function() {  
  11.        var me = this,  
  12.            format = Ext.String.format;  
  13.        return Ext.create('Ext.picker.Month', {  
  14.            pickerField: me,  
  15.            ownerCt: me.ownerCt,  
  16.            renderTo: document.body,  
  17.            floating: true,  
  18.            hidden: true,  
  19.            focusOnShow: true,  
  20.            minDate: me.minValue,  
  21.            maxDate: me.maxValue,  
  22.            disabledDatesRE: me.disabledDatesRE,  
  23.            disabledDatesText: me.disabledDatesText,  
  24.            disabledDays: me.disabledDays,  
  25.            disabledDaysText: me.disabledDaysText,  
  26.            format: me.format,  
  27.            showToday: me.showToday,  
  28.            startDay: me.startDay,  
  29.            minText: format(me.minText, me.formatDate(me.minValue)),  
  30.            maxText: format(me.maxText, me.formatDate(me.maxValue)),  
  31.            listeners: {   
  32.        select:        { scope: me,   fn: me.onSelect     },   
  33.        monthdblclick: { scope: me,   fn: me.onOKClick     },      
  34.        yeardblclick:  { scope: me,   fn: me.onOKClick     },  
  35.        OkClick:       { scope: me,   fn: me.onOKClick     },      
  36.        CancelClick:   { scope: me,   fn: me.onCancelClick }          
  37.            },  
  38.            keyNavConfig: {  
  39.                esc: function() {  
  40.                    me.collapse();  
  41.                }  
  42.            }  
  43.        });  
  44.    },  
  45.    onCancelClick: function() {  
  46.        var me = this;      
  47.    me.selectMonth = null;  
  48.        me.collapse();  
  49.    },  
  50.    onOKClick: function() {  
  51.        var me = this;      
  52.    if( me.selectMonth ) {  
  53.               me.setValue(me.selectMonth);  
  54.            me.fireEvent('select', me, me.selectMonth);  
  55.    }  
  56.        me.collapse();  
  57.    },  
  58.    onSelect: function(m, d) {  
  59.        var me = this;      
  60.    me.selectMonth = new Date(( d[0]+1 ) +'/1/'+d[1]);  
  61.    }  
  62. });   
  63. /** Months picker **/  

 

Java代码  收藏代码
  1. /********************************************************************************/  
  2. //使用时  
  3. xtype: 'monthfield'//引用类型为上面自定义的部分  
  4.        editable : false,  
  5.        format : 'Y/m',//格式化数据  
  6.        fieldLabel: 'beginDate',  
  7.        value : new Date() //最好加上默认时间 否则在第一次点击的时候 如果没有选择数据就点击OK的话 数据无法展示在对话框中  

  • ext2版本插件只显示年月-datefield.rar (9.5 KB)
  • 下载次数: 119
  • Ext4相关文件.rar (1.6 KB)
  • 下载次数: 83
  • 查看图片附件

0 0