`
babydeed
  • 浏览: 238273 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • Ext
EXT 
阅读更多

Ext技术交流群:164648099

 

1:ext3版本插件

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

 

插件代码:

Ext.ux.MonthPickerPlugin = function() { 
    var picker; 
    var oldDateDefaults; 

    this.init = function(pk) { 
        picker = pk; 
        picker.onTriggerClick = picker.onTriggerClick.createSequence(onClick); 
        picker.getValue = picker.getValue.createInterceptor(setDefaultMonthDay).createSequence(restoreDefaultMonthDay); 
        picker.beforeBlur = picker.beforeBlur.createInterceptor(setDefaultMonthDay).createSequence(restoreDefaultMonthDay); 
    }; 

    function setDefaultMonthDay() { 
        oldDateDefaults = Date.defaults.d; 
        Date.defaults.d = 1; 
        return true; 
    } 

    function restoreDefaultMonthDay(ret) { 
        Date.defaults.d = oldDateDefaults; 
        return ret; 
    } 

    function onClick(e, el, opt) { 
        var p = picker.menu.picker; 
        p.activeDate = p.activeDate.getFirstDateOfMonth(); 
        if (p.value) { 
            p.value = p.value.getFirstDateOfMonth(); 
        } 

        p.showMonthPicker(); 
         
        if (!p.disabled) { 
            p.monthPicker.stopFx(); 
            p.monthPicker.show(); 

            p.mun(p.monthPicker, 'click', p.onMonthClick, p); 
            p.mun(p.monthPicker, 'dblclick', p.onMonthDblClick, p); 
            p.onMonthClick = p.onMonthClick.createSequence(pickerClick); 
            p.onMonthDblClick = p.onMonthDblClick.createSequence(pickerDblclick); 
            p.mon(p.monthPicker, 'click', p.onMonthClick, p); 
            p.mon(p.monthPicker, 'dblclick', p.onMonthDblClick, p); 
        } 
    } 

    function pickerClick(e, t) { 
        var el = new Ext.Element(t); 
        if (el.is('button.x-date-mp-cancel')) { 
            picker.menu.hide(); 
        } else if(el.is('button.x-date-mp-ok')) { 
            var p = picker.menu.picker; 
            p.setValue(p.activeDate); 
            p.fireEvent('select', p, p.value); 
        } 
    } 

    function pickerDblclick(e, t) { 
        var el = new Ext.Element(t); 
        if (el.parent() 
            && (el.parent().is('td.x-date-mp-month') 
            || el.parent().is('td.x-date-mp-year'))) { 

            var p = picker.menu.picker; 
            p.setValue(p.activeDate); 
            p.fireEvent('select', p, p.value); 
        } 
    } 
}; 

Ext.preg('monthPickerPlugin', Ext.ux.MonthPickerPlugin);  

 

调用例子:

  new Ext.form.DateField({
      renderTo: document.body,
      plugins:'monthPickerPlugin',
      name:'rq',
      format: 'Y-m'
  });

 

 

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

   

  插件代码见附件

  使用例子:

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

 

{
									xtype : "datefield",
									fieldLabel : "date",
									format:'Y-m'
								}

 效果图:

 

 

 

 

 

3:Ext4版本  年月插件:

 

/** Months picker
      重写 field.Date
**/
Ext.define('Ext.form.field.Month', {
   extend:'Ext.form.field.Date',
   alias: 'widget.monthfield',
   requires: ['Ext.picker.Month'],
   alternateClassName: ['Ext.form.MonthField', 'Ext.form.Month'],
   selectMonth: null,
   createPicker: function() {
       var me = this,
           format = Ext.String.format;
       return Ext.create('Ext.picker.Month', {
           pickerField: me,
           ownerCt: me.ownerCt,
           renderTo: document.body,
           floating: true,
           hidden: true,
           focusOnShow: true,
           minDate: me.minValue,
           maxDate: me.maxValue,
           disabledDatesRE: me.disabledDatesRE,
           disabledDatesText: me.disabledDatesText,
           disabledDays: me.disabledDays,
           disabledDaysText: me.disabledDaysText,
           format: me.format,
           showToday: me.showToday,
           startDay: me.startDay,
           minText: format(me.minText, me.formatDate(me.minValue)),
           maxText: format(me.maxText, me.formatDate(me.maxValue)),
           listeners: { 
       select:        { scope: me,   fn: me.onSelect     }, 
       monthdblclick: { scope: me,   fn: me.onOKClick     },    
       yeardblclick:  { scope: me,   fn: me.onOKClick     },
       OkClick:       { scope: me,   fn: me.onOKClick     },    
       CancelClick:   { scope: me,   fn: me.onCancelClick }        
           },
           keyNavConfig: {
               esc: function() {
                   me.collapse();
               }
           }
       });
   },
   onCancelClick: function() {
       var me = this;    
   me.selectMonth = null;
       me.collapse();
   },
   onOKClick: function() {
       var me = this;    
   if( me.selectMonth ) {
              me.setValue(me.selectMonth);
           me.fireEvent('select', me, me.selectMonth);
   }
       me.collapse();
   },
   onSelect: function(m, d) {
       var me = this;    
   me.selectMonth = new Date(( d[0]+1 ) +'/1/'+d[1]);
   }
}); 
/** Months picker **/

 

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

  其他js见附件

 

  • 大小: 41.5 KB
  • 大小: 15.5 KB
  • 大小: 15.8 KB
3
1
分享到:
评论
7 楼 月度银墙 2017-04-05  
wangxiang243 写道
不错 !
但是ext4中六月和十二月显示不出来,框子短了,怎么解决?


pickerConfig
中加上
height:230,
6 楼 zhaojinmeng 2015-08-11  
您好楼主,extjs5要怎么扩展啊?求指导
5 楼 laungcisin 2014-09-12  
yangxiutian 写道
另外Ext4.2.1还故意把x-monthpicker-buttons的优先级写高了
还必须.x-monthpicker-buttons{position:relative !important;bottom:0;width:100%}
这样写才有效果, 唉 感觉覆盖样式的解决方式并不好啊 Ext一升级 说不定有用不了了

ext-theme-classic-all.css 文件末尾添加
.x-monthpicker-buttons {
    position: relative;
}
.x-datepicker .x-monthpicker-buttons {
    position: absolute;
}

http://www.sencha.com/forum/showthread.php?264688-Ext.picker.Month-bottom-cut-off
4 楼 yangxiutian 2014-04-27  
另外Ext4.2.1还故意把x-monthpicker-buttons的优先级写高了
还必须.x-monthpicker-buttons{position:relative !important;bottom:0;width:100%}
这样写才有效果, 唉 感觉覆盖样式的解决方式并不好啊 Ext一升级 说不定有用不了了
3 楼 yangxiutian 2014-04-27  
楼主,我发现你的解决方案会引发新问题, 如果在同一个页面使用了月份组件和日期组件,那么日期组件点击月份的时候按钮就看不到了,就是因为我们覆盖了它的样式引起的;Ext4.2.1设计的如此蹩脚是不是故意阻止我们扩展月份插件的,那它怎么不搞一个官方的呢。。。
i_m 写道
我在ext4.2中,也是引用该脚本,跟1楼同样问题。我google调试后,找到相关样式。
在jsp中覆盖样式
.x-monthpicker-buttons{position:relative;bottom:0;width:100%}
这个样式,把position:absolute 替换为relative就出来了。

2 楼 i_m 2013-10-31  
我在ext4.2中,也是引用该脚本,跟1楼同样问题。我google调试后,找到相关样式。
在jsp中覆盖样式
.x-monthpicker-buttons{position:relative;bottom:0;width:100%}
这个样式,把position:absolute 替换为relative就出来了。
1 楼 wangxiang243 2013-05-17  
不错 !
但是ext4中六月和十二月显示不出来,框子短了,怎么解决?

相关推荐

    Ext DateField控件 - 只选择年月插件

    总结来说,"Ext DateField控件 - 只选择年月插件"是一个方便易用的工具,能够帮助开发者在Ext JS应用程序中实现更精细的日期选择功能,专注于年月的选取,从而满足特定场景下的用户需求。通过合理地配置和集成,你...

    EXT 选择年月 插件

    Ext中控件非常丰富,有各种格式的日期选择DateField,但是要选择月份,非常麻烦.往往是需要修改源码的方法 我添加了一个插件 代码及调用见 下载资源 本人已测 无问题

    ext里可以选择年月日时分秒的控件

    在EXT(Ext JS)这个强大的JavaScript框架中,时间控件是一种常见的组件,用于用户界面中进行日期和时间的选择。EXT提供了多种这样的控件,其中一种是能够选择年、月、日、时、分、秒的高级时间选择器。标题中的"ext...

    EXT js 4带时间的日期控件

    2. **配置时间选择**:在新的控件类中,我们可以通过设置`format`属性来指定日期和时间的格式,例如`'Y-m-d H:i:s'`,这会显示年月日、小时、分钟和秒。同时,`timeFormat`属性可以用于定制时间部分的显示格式。 3....

    extjs年份控件(只显示年,无月日时分秒)

    Extjs DateField控件 - 只选择年份(找了很久发现网上只有选择年月的控件,于是基于extjs年月控件设计了只选择年份的控件)

    Ext-datatimefield日期与时间选择器精确至时分秒

    1.此控件支持Ext3.2及以上版本 2.用法与Ext.form.DateField一样,xtype:'datetimefield' 3.不需要导入css或其他js 4.解决某些插件导入会显示对象未定义问题

    Ext4.2年月日时分秒控件

    总之,Ext4.2年月日时分秒时间选择控件是一个增强用户体验的前端组件,它结合了日期选择和时间选择的功能,使用户能够更准确地输入时间信息。通过深入理解和使用这样的控件,开发者可以提升Web应用的质量和用户体验...

    Extjs 年月日时分秒组件

    在压缩包中的"Ext年月日时分秒组件"可能包含了源码、示例、文档和样式文件。通过查看这些文件,你可以学习如何在自己的项目中集成并定制这个组件。一般来说,开发者会参考提供的示例代码,理解其工作原理,然后根据...

    为EXT写的月份选择控件

    往往是需要修改源码的方法,如: 修改Ext.DatePicker使得Ext.form.DateField只选择年月 等,但是修改源码有个不好的地方,如果ext升级了,又需要改一次,很不方便.干脆,就重写了一个月份选择控件.使用接口和DateField类似,...

    Extjs4 日期控件,带年月日时分秒

    ExtJS4支持多语言,因此日期控件可以根据用户的浏览器设置或者手动配置显示不同语言的日期和时间格式。 6. **自定义渲染** 通过使用`renderer`函数,你可以自定义日期字段的显示方式,这在需要特殊格式或者样式时...

    ExtJs4.2.1年月日时分秒、时分秒控件

    3. **组合控件(DateTime Field)**:如果你需要同时选择日期和时间,可以使用`Ext.form.field.DateTimePicker`,它结合了日期和时间选择器的优点。配置项会包含上述两种选择器的所有选项,可以自定义日期和时间的...

    My97DatePicker皮肤,蓝色

    2. **多功能**:支持多种日期格式,如年月日、年/月/日等,并可以设置日期范围限制,防止用户输入无效日期。 3. **自定义**:开发者可以根据自己的需求调整日期选择器的样式、语言、显示模式等,蓝色皮肤提供了基础...

    js日历代码

    - `dateFmt`:指定日期格式,如`'yyyy-MM-dd'`表示年月日,`'yyyy-MM-dd HH:mm'`表示年月日加时分。 ##### 2.3 ASP.NET Web Forms - **概念介绍**:ASP.NET Web Forms是一种构建动态Web应用程序的技术,由...

Global site tag (gtag.js) - Google Analytics