ExtJs4 日期 年月选择控件(转)

原文作者:http://ext4all.com/post/ext4-monthfield-with-month-picker-for-extjs4

某论坛弄下来的,。原文如下:

我也来发一个年月选择控件,因为某些场合只需要年份和月份信息,直接使用日期控件,虽然能通过format等方式可以得到,但是还要选择日期才能完成输 入,比较麻烦,在网上找了一下,搜索到两个,都是2.x版的;于是就自己动手写一个,在4.1版中测试通过。给需要的朋友,效果如下图:

按 Ctrl+C 复制代码
MonthField.js

Ext.define('Ext.ux.form.MonthField', {
extend: 'Ext.form.field.Picker',
alias: 'widget.monthfield',
//requires: ['Ext.picker.Date'],
//alternateClassName: ['Ext.form.DateField', 'Ext.form.Date'],

format: "Y-m",

altFormats: "m/y|m/Y|m-y|m-Y|my|mY|y/m|Y/m|y-m|Y-m|ym|Ym",

//disabledDaysText: "Disabled",

//disabledDatesText: "Disabled",

//minText: "The date in this field must be equal to or after {0}",

//maxText: "The date in this field must be equal to or before {0}",

//invalidText: "{0} is not a valid date - it must be in the format {1}",

triggerCls: Ext.baseCSSPrefix + 'form-date-trigger',

//showToday: true,

//initTime: '12',

//initTimeFormat: 'H',

matchFieldWidth: false,

startDay: new Date(),

initComponent: function () {
var me = this;

me.disabledDatesRE = null;

me.callParent();
},

initValue: function () {
var me = this,
value = me.value;

if (Ext.isString(value)) {
me.value = Ext.Date.parse(value, this.format);
}
if (me.value)
me.startDay = me.value;
me.callParent();
},

rawToValue: function (rawValue) {
return Ext.Date.parse(rawValue, this.format) || rawValue || null;
},

valueToRaw: function (value) {
return this.formatDate(value);
},

formatDate: function (date) {
return Ext.isDate(date) ? Ext.Date.dateFormat(date, this.format) : date;
},
createPicker: function () {
var me = this,
format = Ext.String.format;

return Ext.create('Ext.picker.Month', {
//renderTo: me.el,
pickerField: me,
ownerCt: me.ownerCt,
renderTo: document.body,
floating: true,
shadow: false,
focusOnShow: true,
listeners: {
scope: me,
cancelclick: me.onCancelClick,
okclick: me.onOkClick,
yeardblclick: me.onOkClick,
monthdblclick: me.onOkClick
}
});
},

onExpand: function () {
//this.picker.show();
this.picker.setValue(this.startDay);
//

},

// onCollapse: function () {
// this.focus(false, 60);
// },

onOkClick: function (picker, value) {
var me = this,
month = value[0],
year = value[1],
date = new Date(year, month, 1);
me.startDay = date;
me.setValue(date);
this.picker.hide();
//this.blur();
},

onCancelClick: function () {
this.picker.hide();
//this.blur();
}

});
按 Ctrl+C 复制代码

 

<html >
<head>
 <title>Insurance Report</title>
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" /> 

<script type="text/javascript" src="ext-all.js"></script>
<script type="text/javascript" src="MonthField.js"></script>
<script type="text/javascript" src="ext-lang-zh_CN.js"></script>
<script type="text/javascript">

    Ext.onReady(function () {
        var form = Ext.create('Ext.form.Panel', {
            renderTo: Ext.getBody(),
            title: 'Simple Form',
            height: 500,
            layout: 'hbox',
            items: [
                    {
                        xtype: 'monthfield', fieldLabel: '日期', editable: false, width: 150, labelWidth: 30, labelAlign: 'right',
                        format: 'Y-m'
                    },
                    {
                        xtype: 'monthfield', fieldLabel: '日期', editable: false, width: 150, labelWidth: 30, labelAlign: 'right',
                        format: 'Ym'
                    }
                ]
        });
    });

</script>

</head>
<body >

</body>
</html>

 

DataPicker 时分秒插件:http://www.sencha.com/forum/showthread.php?137242-Ext.ux.DateTimeField-DateTimePicker-for-ext4-also-DateTimeMenu-TimePickerField

时间: 2024-10-25 16:50:46

ExtJs4 日期 年月选择控件(转)的相关文章

Ext JS框架中日期函数的用法及日期选择控件的实现_extjs

Ext.Date是一个单例,封装了一系列日期操作函数,扩展JavaScript Date的功能,下面列出一些常用的功能. 基本函数: Ext.Date.add(date, interval, value) 给date增加或减少时间,这个函数不改变原有Date对象的值,而是返回一个新的Date对象. Ext.Date.between(date, start, end) 判断date是否在start和end之间. Ext.Date.clearTime(date, clone) 把date的时间设置成

基于jQuery的日期选择控件_jquery

但是也有些问题,第一画日历有点慢,第二兼容性不太好IE Only,第三它不是基于jQuery的哈哈. 那还是老规矩,做之前先看下效果   这下是更酷的Ext风格了. 从上图我们可以看出这个控件其实有两个视图一个日期月视图,还有一个是年月选择视图. 1:还是先从HTML入手 日期控件确定HTML其实还是比较简单,因为明摆着是列表的数据格式,当然主要是采用table了. 两个视图分别用两个Div包裹,控制div的显示隐藏即可以切换视图了.完整的HTMl结构大家可以用IEDeveloper看一下Dem

wpf-WPF中,日历控件的大小或者日期选择控件的大小怎么调整?

问题描述 WPF中,日历控件的大小或者日期选择控件的大小怎么调整? 在网上看了不少资料,貌似没有一个很好的答案. 虽然这两个控件都有width和height属性,但是设置之后应该是这个控件所占的控件的大小发生了变化,实际上显示的内容并没有发生变化. 似乎说可以写样式可以实现,但是挺麻烦的,不知道大家有没有遇到过这样的问题,怎么修改这两个控件实际显示的大小?

请问在winform中,如何点击datagrid进行编辑,并在编辑的文本框下方出现datagrid 或者日期选择控件?我现在用的是vs.net2003

问题描述 请问在winform中,如何点击datagrid进行编辑,并在编辑的文本框下方出现datagrid或者日期选择控件?我现在用的是vs.net2003 解决方案 解决方案二:参考这个解决方案三:友情up解决方案四:大家帮帮忙啊!解决就结分解决方案五:可用Devexpress控件包的CXGrid控件轻松搞定.解决方案六:不要用.net1.1来做winform,根本就不合适.解决方案七:添加模板列就可以了

Ext JS 4实现带week(星期)的日期选择控件(实战二)_extjs

前言 JavaScript 中的日期和时间 Ext JS 4实现带week(星期)的日期选择控件(实战一) 如对本篇的一些预备知识需详尽了解,可参考以上两篇. Javascript 有提供Date 对象用于处理时间.但是Date 并没有提供获取星期的方法. 要在web 端通过js 方式获取某个时间是这一年的第几个星期,可以根据一些算法去实现. 当然, jquery 的扩展组件 等有直接提供这样的一些现成包. 像Ext js 就有提供获取星期的方法 Ext.Date.getWeekOfYear(d

jquery日期时间My97DatePicker选择控件函数使用例子

1.推荐日期选择控件:My97DatePicker My97DatePicker是一个非常好用的日期/时间选择控件,支持多种日期时间类型等: 支持的浏览器 IE 6.0+ , Firefox 2.0+ , Chrome, Opera 9.5+ , Safari 3.0+ 注意:IE 8/9/10/11是完美支持的 功能如下: 常规功能 支持多种调用模式 下拉,输入,导航选择日期 支持周显示 只读开关,高亮周末功能 操作按钮自定义 自动选择显示位置 自定义弹出位置 自定义星期的第一天new 特色功

Android自定义控件之日期选择控件使用详解

Android日期选择控件效果如下: 调用的代码: @OnClick(R.id.btn0) public void btn0() { final AlertDialog dialog = new AlertDialog.Builder(context).create(); dialog.show(); Window window = dialog.getWindow(); window.setContentView(R.layout.dialog_change_date); window.set

JS日期和时间选择控件升级版

鉴于网上找到的几个日期选择程序有些问题,遂着手重写一个程序,添加了时间选择功能,截图及源码如下,有需要的朋友可以参考下   鉴于网上找到的几个日期选择程序有些问题,遂着手重写一个程序,大部分还是借鉴前人的代码,添加了时间选择功能,隐藏会遮挡控件的标签select,object. 开始本想使用window.createPopup()来弹出日历的选择,这样就可以跨过任何标签. 不过做到中途发现用createPopup窗口实现理论上是行不通的: 一是因为不在窗体里单击任何地方都会关闭窗口,而当用下拉框

JS日期和时间选择控件升级版(自写)_javascript技巧

鉴于网上找到的几个日期选择程序有些问题,遂着手重写一个程序,大部分还是借鉴前人的代码,添加了时间选择功能,隐藏会遮挡控件的标签select,object. 开始本想使用window.createPopup()来弹出日历的选择,这样就可以跨过任何标签. 不过做到中途发现用createPopup窗口实现理论上是行不通的: 一是因为不在窗体里单击任何地方都会关闭窗口,而当用下拉框选择年份时,很有可能会单击到窗体外的地方,当然这个可以自己写select来避免,但是比较麻烦: 二是窗体的宽度和高度只能在弹