- 浏览: 224278 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (213)
- SQLServer (8)
- flex (8)
- 文章 (5)
- java (91)
- 数据结构 (0)
- 设计模式 (0)
- C# (2)
- Oracle (4)
- 技术 (4)
- 云计算 (0)
- 算法 (0)
- 记录 (3)
- javascript (5)
- div/css (1)
- http (0)
- IE (1)
- web (1)
- hadoop (0)
- extjs (4)
- hibernate (6)
- 错误记录 (5)
- mysql (4)
- json (1)
- jvm (1)
- spring (4)
- 工具 (2)
- tomcat (3)
- cxf (3)
- spring data (1)
- memcached (5)
- android-exception (2)
- 数据压缩 (1)
- 博客 (2)
- bat (0)
- nginx (3)
- svn (2)
- jpa (1)
- windows (2)
- h2 (2)
- webservice (2)
- android (5)
- oa (0)
- eclipse (2)
- jquery (2)
- jni (4)
- weblogic (1)
- work (0)
- smartclient (1)
- sql (0)
- excel (0)
- test (0)
- t (0)
- js (4)
- utils (0)
- bootstrap (0)
- sniper (0)
- ztree (0)
- google (0)
- mdb (0)
- redis (1)
- 思想 (1)
- css (0)
- appCan (0)
- activiti (0)
- 工作 (0)
- 浏览器 (1)
http://shuimomo.blog.51cto.com/1141396/1293750
截止目前最新的Ext-4.2.1.883版本,分别提供日期组件(xtype:'datefield')和时间组件(xtype:'timefield'),却没有提供日期+时分秒组件。
搜索到的牛人扩展组件代码贴下:
1、新建时间选择器上的时分秒输入框类TimePickerField.js
/**
* 时间输入框, 三个整数框分别输入时,分,秒.
* @author wangzilong
* update Ext - 4.1 2012/04/27
*/
Ext.define('MyApp.ux.TimePickerField', {
extend: 'Ext.form.field.Base',
alias: 'widget.timepicker',
alternateClassName: 'Ext.form.field.TimePickerField',
requires: ['Ext.form.field.Number'],
// 隐藏BaseField的输入框 , hidden basefield's input
inputType: 'hidden',
style: 'padding:4px 0 0 0;margin-bottom:0px',
/**
* @cfg {String} value
* initValue, format: 'H:i:s'
*/
value: null,
/**
* @cfg {Object} spinnerCfg
* 数字输入框参数, number input config
*/
spinnerCfg: {
width: 40
},
/** Override. */
initComponent: function() {
var me = this;
me.value = me.value || Ext.Date.format(new Date(), 'H:i:s');
me.callParent();// called setValue
me.spinners = [];
var cfg = Ext.apply({}, me.spinnerCfg, {
readOnly: me.readOnly,
disabled: me.disabled,
style: 'float: left',
listeners: {
change: {
fn: me.onSpinnerChange,
scope: me
}
}
});
me.hoursSpinner = Ext.create('Ext.form.field.Number', Ext.apply({}, cfg, {
minValue: 0,
maxValue: 23
}));
me.minutesSpinner = Ext.create('Ext.form.field.Number', Ext.apply({}, cfg, {
minValue: 0,
maxValue: 59
}));
// TODO 使用timeformat 判断是否创建秒输入框, maybe second field is not always need.
me.secondsSpinner = Ext.create('Ext.form.field.Number', Ext.apply({}, cfg, {
minValue: 0,
maxValue: 59
}));
me.spinners.push(me.hoursSpinner, me.minutesSpinner, me.secondsSpinner);
},
/**
* @private
* Override.
*/
onRender: function() {
var me = this, spinnerWrapDom, spinnerWrap;
me.callParent(arguments);
// render to original BaseField input td
// spinnerWrap = Ext.get(Ext.DomQuery.selectNode('div', this.el.dom)); // 4.0.2
spinnerWrapDom = Ext.dom.Query.select('td', this.getEl().dom)[1]; // 4.0 ->4.1 div->td
spinnerWrap = Ext.get(spinnerWrapDom);
me.callSpinnersFunction('render', spinnerWrap);
Ext.core.DomHelper.append(spinnerWrap, {
tag: 'div',
cls: 'x-form-clear-left'
});
this.setRawValue(this.value);
},
_valueSplit: function(v) {
if(Ext.isDate(v)) {
v = Ext.Date.format(v, 'H:i:s');
}
var split = v.split(':');
return {
h: split.length > 0 ? split[0] : 0,
m: split.length > 1 ? split[1] : 0,
s: split.length > 2 ? split[2] : 0
};
},
onSpinnerChange: function() {
if(!this.rendered) {
return;
}
this.fireEvent('change', this, this.getValue(), this.getRawValue());
},
// 依次调用各输入框函数, call each spinner's function
callSpinnersFunction: function(funName, args) {
for(var i = 0; i < this.spinners.length; i++) {
this.spinners[i][funName](args);
}
},
// @private get time as object,
getRawValue: function() {
if(!this.rendered) {
var date = this.value || new Date();
return this._valueSplit(date);
} else {
return {
h: this.hoursSpinner.getValue(),
m: this.minutesSpinner.getValue(),
s: this.secondsSpinner.getValue()
};
}
},
// private
setRawValue: function(value) {
value = this._valueSplit(value);
if(this.hoursSpinner) {
this.hoursSpinner.setValue(value.h);
this.minutesSpinner.setValue(value.m);
this.secondsSpinner.setValue(value.s);
}
},
// overwrite
getValue: function() {
var v = this.getRawValue();
return Ext.String.leftPad(v.h, 2, '0') + ':' + Ext.String.leftPad(v.m, 2, '0') + ':'
+ Ext.String.leftPad(v.s, 2, '0');
},
// overwrite
setValue: function(value) {
this.value = Ext.isDate(value) ? Ext.Date.format(value, 'H:i:s') : value;
if(!this.rendered) {
return;
}
this.setRawValue(this.value);
this.validate();
},
// overwrite
disable: function() {
this.callParent(arguments);
this.callSpinnersFunction('disable', arguments);
},
// overwrite
enable: function() {
this.callParent(arguments);
this.callSpinnersFunction('enable', arguments);
},
// overwrite
setReadOnly: function() {
this.callParent(arguments);
this.callSpinnersFunction('setReadOnly', arguments);
},
// overwrite
clearInvalid: function() {
this.callParent(arguments);
this.callSpinnersFunction('clearInvalid', arguments);
},
// overwrite
isValid: function(preventMark) {
return this.hoursSpinner.isValid(preventMark) && this.minutesSpinner.isValid(preventMark)
&& this.secondsSpinner.isValid(preventMark);
},
// overwrite
validate: function() {
return this.hoursSpinner.validate() && this.minutesSpinner.validate() && this.secondsSpinner.validate();
}
});
2、将日期选择器datepicker组件扩展成日期时分秒选择器datetimepicker:
Ext.define('MyApp.ux.DateTimePicker', {
extend: 'Ext.picker.Date',
alias: 'widget.datetimepicker',
todayText: '现在',
timeLabel: '时间',
requires: ['MyApp.ux.TimePickerField'],
initComponent: function() {
// keep time part for value
var value = this.value || new Date();
this.callParent();
this.value = value;
},
onRender: function(container, position) {
if(!this.timefield) {
this.timefield = Ext.create('MyApp.ux.TimePickerField', {
fieldLabel: this.timeLabel,
labelWidth: 40,
value: Ext.Date.format(this.value, 'H:i:s')
});
}
this.timefield.ownerCt = this;
this.timefield.on('change', this.timeChange, this);
this.callParent(arguments);
var table = Ext.get(Ext.DomQuery.selectNode('table', this.el.dom));
var tfEl = Ext.core.DomHelper.insertAfter(table, {
tag: 'div',
style: 'border:0px;',
children: [{
tag: 'div',
cls: 'x-datepicker-footer ux-timefield'
}]
}, true);
this.timefield.render(this.el.child('div div.ux-timefield'));
var p = this.getEl().parent('div.x-layer');
if(p) {
p.setStyle("height", p.getHeight() + 31);
}
},
// listener 时间域修改, timefield change
timeChange: function(tf, time, rawtime) {
// if(!this.todayKeyListener) { // before render
this.value = this.fillDateTime(this.value);
// } else {
// this.setValue(this.value);
// }
},
// @private
fillDateTime: function(value) {
if(this.timefield) {
var rawtime = this.timefield.getRawValue();
value.setHours(rawtime.h);
value.setMinutes(rawtime.m);
value.setSeconds(rawtime.s);
}
return value;
},
// @private
changeTimeFiledValue: function(value) {
this.timefield.un('change', this.timeChange, this);
this.timefield.setValue(this.value);
this.timefield.on('change', this.timeChange, this);
},
/* TODO 时间值与输入框绑定, 考虑: 创建this.timeValue 将日期和时间分开保存. */
// overwrite
setValue: function(value) {
this.value = value;
this.changeTimeFiledValue(value);
return this.update(this.value);
},
// overwrite
getValue: function() {
return this.fillDateTime(this.value);
},
// overwrite : fill time before setValue
handleDateClick: function(e, t) {
var me = this,
handler = me.handler;
e.stopEvent();
if(!me.disabled && t.dateValue && !Ext.fly(t.parentNode).hasCls(me.disabledCellCls)) {
me.doCancelFocus = me.focusOnSelect === false;
me.setValue(this.fillDateTime(new Date(t.dateValue))); // overwrite: fill time before setValue
delete me.doCancelFocus;
me.fireEvent('select', me, me.value);
if(handler) {
handler.call(me.scope || me, me, me.value);
}
me.onSelect();
}
},
// overwrite : fill time before setValue
selectToday: function() {
var me = this,
btn = me.todayBtn,
handler = me.handler;
if(btn && !btn.disabled) {
// me.setValue(Ext.Date.clearTime(new Date())); //src
me.setValue(new Date());// overwrite: fill time before setValue
me.fireEvent('select', me, me.value);
if(handler) {
handler.call(me.scope || me, me, me.value);
}
me.onSelect();
}
return me;
}
});
2、引用日期时分秒选择器datetimepicker,将日期datefield组件扩展成日期时分秒datetimefield组件:
Ext.Loader.setConfig({enabled:true});
Ext.Loader.setPath('MyApp', '../houtai/js');
Ext.define('MyApp.ux.DateTimeField', {
extend: 'Ext.form.field.Date',
alias: 'widget.datetimefield',
requires: ['MyApp.ux.DateTimePicker'],
initComponent: function() {
this.format = this.format;
this.callParent();
},
// overwrite
createPicker: function() {
var me = this,
format = Ext.String.format;
return Ext.create('MyApp.ux.DateTimePicker', {
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: {
scope: me,
select: me.onSelect
},
keyNavConfig: {
esc: function() {
me.collapse();
}
}
});
}
});
3、在form中使用xtype:datetimefield,首先引入扩展类:
requires:'MyApp.ux.DateTimeField',
具体使用:
{
xtype:'datetimefield',
width : 300,
labelWidth : 80,
endDateField:'etime',
vtype:'daterange',
fieldLabel: '记录时间下限',
format: 'Y-m-d H:i:s ',
name:'stime'
},
{
xtype:'datetimefield',
width : 300,
labelWidth : 80,
startDateField:'stime',
vtype:'daterange',
fieldLabel: '记录时间上限',
format: 'Y-m-d H:i:s ',
name:'etime'
},
4、页面效果:
152016382.jpg
152018806.jpg
5、使用体验:
可实现日期时分秒的选择输入,但操作体验略差强人意。如:选择器上只有'现在'按钮,若增加‘确定’按钮,点击后选择器消失,日期时分秒值填入框体就好了。现在选非'现在'的精确时间,最后需以点击日期结束,框体中的年月日时分秒才与选择器中完全一致。
截止目前最新的Ext-4.2.1.883版本,分别提供日期组件(xtype:'datefield')和时间组件(xtype:'timefield'),却没有提供日期+时分秒组件。
搜索到的牛人扩展组件代码贴下:
1、新建时间选择器上的时分秒输入框类TimePickerField.js
/**
* 时间输入框, 三个整数框分别输入时,分,秒.
* @author wangzilong
* update Ext - 4.1 2012/04/27
*/
Ext.define('MyApp.ux.TimePickerField', {
extend: 'Ext.form.field.Base',
alias: 'widget.timepicker',
alternateClassName: 'Ext.form.field.TimePickerField',
requires: ['Ext.form.field.Number'],
// 隐藏BaseField的输入框 , hidden basefield's input
inputType: 'hidden',
style: 'padding:4px 0 0 0;margin-bottom:0px',
/**
* @cfg {String} value
* initValue, format: 'H:i:s'
*/
value: null,
/**
* @cfg {Object} spinnerCfg
* 数字输入框参数, number input config
*/
spinnerCfg: {
width: 40
},
/** Override. */
initComponent: function() {
var me = this;
me.value = me.value || Ext.Date.format(new Date(), 'H:i:s');
me.callParent();// called setValue
me.spinners = [];
var cfg = Ext.apply({}, me.spinnerCfg, {
readOnly: me.readOnly,
disabled: me.disabled,
style: 'float: left',
listeners: {
change: {
fn: me.onSpinnerChange,
scope: me
}
}
});
me.hoursSpinner = Ext.create('Ext.form.field.Number', Ext.apply({}, cfg, {
minValue: 0,
maxValue: 23
}));
me.minutesSpinner = Ext.create('Ext.form.field.Number', Ext.apply({}, cfg, {
minValue: 0,
maxValue: 59
}));
// TODO 使用timeformat 判断是否创建秒输入框, maybe second field is not always need.
me.secondsSpinner = Ext.create('Ext.form.field.Number', Ext.apply({}, cfg, {
minValue: 0,
maxValue: 59
}));
me.spinners.push(me.hoursSpinner, me.minutesSpinner, me.secondsSpinner);
},
/**
* @private
* Override.
*/
onRender: function() {
var me = this, spinnerWrapDom, spinnerWrap;
me.callParent(arguments);
// render to original BaseField input td
// spinnerWrap = Ext.get(Ext.DomQuery.selectNode('div', this.el.dom)); // 4.0.2
spinnerWrapDom = Ext.dom.Query.select('td', this.getEl().dom)[1]; // 4.0 ->4.1 div->td
spinnerWrap = Ext.get(spinnerWrapDom);
me.callSpinnersFunction('render', spinnerWrap);
Ext.core.DomHelper.append(spinnerWrap, {
tag: 'div',
cls: 'x-form-clear-left'
});
this.setRawValue(this.value);
},
_valueSplit: function(v) {
if(Ext.isDate(v)) {
v = Ext.Date.format(v, 'H:i:s');
}
var split = v.split(':');
return {
h: split.length > 0 ? split[0] : 0,
m: split.length > 1 ? split[1] : 0,
s: split.length > 2 ? split[2] : 0
};
},
onSpinnerChange: function() {
if(!this.rendered) {
return;
}
this.fireEvent('change', this, this.getValue(), this.getRawValue());
},
// 依次调用各输入框函数, call each spinner's function
callSpinnersFunction: function(funName, args) {
for(var i = 0; i < this.spinners.length; i++) {
this.spinners[i][funName](args);
}
},
// @private get time as object,
getRawValue: function() {
if(!this.rendered) {
var date = this.value || new Date();
return this._valueSplit(date);
} else {
return {
h: this.hoursSpinner.getValue(),
m: this.minutesSpinner.getValue(),
s: this.secondsSpinner.getValue()
};
}
},
// private
setRawValue: function(value) {
value = this._valueSplit(value);
if(this.hoursSpinner) {
this.hoursSpinner.setValue(value.h);
this.minutesSpinner.setValue(value.m);
this.secondsSpinner.setValue(value.s);
}
},
// overwrite
getValue: function() {
var v = this.getRawValue();
return Ext.String.leftPad(v.h, 2, '0') + ':' + Ext.String.leftPad(v.m, 2, '0') + ':'
+ Ext.String.leftPad(v.s, 2, '0');
},
// overwrite
setValue: function(value) {
this.value = Ext.isDate(value) ? Ext.Date.format(value, 'H:i:s') : value;
if(!this.rendered) {
return;
}
this.setRawValue(this.value);
this.validate();
},
// overwrite
disable: function() {
this.callParent(arguments);
this.callSpinnersFunction('disable', arguments);
},
// overwrite
enable: function() {
this.callParent(arguments);
this.callSpinnersFunction('enable', arguments);
},
// overwrite
setReadOnly: function() {
this.callParent(arguments);
this.callSpinnersFunction('setReadOnly', arguments);
},
// overwrite
clearInvalid: function() {
this.callParent(arguments);
this.callSpinnersFunction('clearInvalid', arguments);
},
// overwrite
isValid: function(preventMark) {
return this.hoursSpinner.isValid(preventMark) && this.minutesSpinner.isValid(preventMark)
&& this.secondsSpinner.isValid(preventMark);
},
// overwrite
validate: function() {
return this.hoursSpinner.validate() && this.minutesSpinner.validate() && this.secondsSpinner.validate();
}
});
2、将日期选择器datepicker组件扩展成日期时分秒选择器datetimepicker:
Ext.define('MyApp.ux.DateTimePicker', {
extend: 'Ext.picker.Date',
alias: 'widget.datetimepicker',
todayText: '现在',
timeLabel: '时间',
requires: ['MyApp.ux.TimePickerField'],
initComponent: function() {
// keep time part for value
var value = this.value || new Date();
this.callParent();
this.value = value;
},
onRender: function(container, position) {
if(!this.timefield) {
this.timefield = Ext.create('MyApp.ux.TimePickerField', {
fieldLabel: this.timeLabel,
labelWidth: 40,
value: Ext.Date.format(this.value, 'H:i:s')
});
}
this.timefield.ownerCt = this;
this.timefield.on('change', this.timeChange, this);
this.callParent(arguments);
var table = Ext.get(Ext.DomQuery.selectNode('table', this.el.dom));
var tfEl = Ext.core.DomHelper.insertAfter(table, {
tag: 'div',
style: 'border:0px;',
children: [{
tag: 'div',
cls: 'x-datepicker-footer ux-timefield'
}]
}, true);
this.timefield.render(this.el.child('div div.ux-timefield'));
var p = this.getEl().parent('div.x-layer');
if(p) {
p.setStyle("height", p.getHeight() + 31);
}
},
// listener 时间域修改, timefield change
timeChange: function(tf, time, rawtime) {
// if(!this.todayKeyListener) { // before render
this.value = this.fillDateTime(this.value);
// } else {
// this.setValue(this.value);
// }
},
// @private
fillDateTime: function(value) {
if(this.timefield) {
var rawtime = this.timefield.getRawValue();
value.setHours(rawtime.h);
value.setMinutes(rawtime.m);
value.setSeconds(rawtime.s);
}
return value;
},
// @private
changeTimeFiledValue: function(value) {
this.timefield.un('change', this.timeChange, this);
this.timefield.setValue(this.value);
this.timefield.on('change', this.timeChange, this);
},
/* TODO 时间值与输入框绑定, 考虑: 创建this.timeValue 将日期和时间分开保存. */
// overwrite
setValue: function(value) {
this.value = value;
this.changeTimeFiledValue(value);
return this.update(this.value);
},
// overwrite
getValue: function() {
return this.fillDateTime(this.value);
},
// overwrite : fill time before setValue
handleDateClick: function(e, t) {
var me = this,
handler = me.handler;
e.stopEvent();
if(!me.disabled && t.dateValue && !Ext.fly(t.parentNode).hasCls(me.disabledCellCls)) {
me.doCancelFocus = me.focusOnSelect === false;
me.setValue(this.fillDateTime(new Date(t.dateValue))); // overwrite: fill time before setValue
delete me.doCancelFocus;
me.fireEvent('select', me, me.value);
if(handler) {
handler.call(me.scope || me, me, me.value);
}
me.onSelect();
}
},
// overwrite : fill time before setValue
selectToday: function() {
var me = this,
btn = me.todayBtn,
handler = me.handler;
if(btn && !btn.disabled) {
// me.setValue(Ext.Date.clearTime(new Date())); //src
me.setValue(new Date());// overwrite: fill time before setValue
me.fireEvent('select', me, me.value);
if(handler) {
handler.call(me.scope || me, me, me.value);
}
me.onSelect();
}
return me;
}
});
2、引用日期时分秒选择器datetimepicker,将日期datefield组件扩展成日期时分秒datetimefield组件:
Ext.Loader.setConfig({enabled:true});
Ext.Loader.setPath('MyApp', '../houtai/js');
Ext.define('MyApp.ux.DateTimeField', {
extend: 'Ext.form.field.Date',
alias: 'widget.datetimefield',
requires: ['MyApp.ux.DateTimePicker'],
initComponent: function() {
this.format = this.format;
this.callParent();
},
// overwrite
createPicker: function() {
var me = this,
format = Ext.String.format;
return Ext.create('MyApp.ux.DateTimePicker', {
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: {
scope: me,
select: me.onSelect
},
keyNavConfig: {
esc: function() {
me.collapse();
}
}
});
}
});
3、在form中使用xtype:datetimefield,首先引入扩展类:
requires:'MyApp.ux.DateTimeField',
具体使用:
{
xtype:'datetimefield',
width : 300,
labelWidth : 80,
endDateField:'etime',
vtype:'daterange',
fieldLabel: '记录时间下限',
format: 'Y-m-d H:i:s ',
name:'stime'
},
{
xtype:'datetimefield',
width : 300,
labelWidth : 80,
startDateField:'stime',
vtype:'daterange',
fieldLabel: '记录时间上限',
format: 'Y-m-d H:i:s ',
name:'etime'
},
4、页面效果:
152016382.jpg
152018806.jpg
5、使用体验:
可实现日期时分秒的选择输入,但操作体验略差强人意。如:选择器上只有'现在'按钮,若增加‘确定’按钮,点击后选择器消失,日期时分秒值填入框体就好了。现在选非'现在'的精确时间,最后需以点击日期结束,框体中的年月日时分秒才与选择器中完全一致。
发表评论
-
TypeError: Cannot read property 'parentNode' of undefined
2015-01-04 17:18 2015特别注意,ExtJs在定义ID时必须是全局唯一性,当打开两个界 ... -
Extjs Vtype 基础学习
2014-10-14 11:43 525EXT2.0 Vtype中实现了四种基本验证方式: 1.al ... -
extjs tree cannot read property 'iscollapsed placeholder
2014-09-22 14:06 1021在使用extjs时,加载tree时,出现:cannot rea ...
相关推荐
"EXT日期时间控件"是一个专门用于显示和编辑日期及时间的控件,它可以精确到时、分、秒,满足了对时间精确度有较高要求的应用场景。EXT的时间控件不仅提供了基本的日期和时间选择功能,还支持自定义格式化、日期范围...
EXT日期时间控件2是一款基于EXT JavaScript库的高级UI组件,专为网页应用设计,用于提供用户友好的日期和时间选择功能。EXT是一个强大的前端框架,由Sencha公司开发,广泛应用于构建富互联网应用程序(RIA)。EXT的...
在本文中,我们将深入探讨`ExtJS`框架中的两个关键组件——`Ext日期时间控件`和`Spinner控件`,以及它们在`Grid`中的应用。`ExtJS`是一款强大的JavaScript库,专用于构建富客户端应用程序,尤其适用于创建复杂的、...
标题中的“Ext日期时间(时分秒)控件”指的是在Web开发中使用的一种特定的用户界面组件,它允许用户选择或输入日期和时间。在本文中,我们将会深入探讨这个主题,包括ExtJS框架中的DateTime控件的使用、功能以及如何...
用过Extjs的人都晓得,Ext自身的DateField只支持日期选择,而TimeField却实现的又很简单。真的是苦了一帮子英雄好汉啊!此控件由本人原创,扩展了DateField。在Extjs3.0.0、3.2.1、3.3.0版本下都测试通过。且在IE6、...
EXT日期加时间控件 EXT日期加时间控件
5. **集成到项目**:在实际项目中,将DateTimePicker和DateTimeField整合到表单或界面中,可能涉及到与后端API的交互,如将用户选择的日期时间传递给服务器,或者从服务器获取数据并填充到DateTimeField中。...
标题“Ext时间日期选择控件,精确到秒”指出了该控件允许用户选择时间到秒级别,这对于需要精确时间记录的应用场景(如日程安排、定时任务等)非常关键。EXTJS提供了多种时间日期选择控件,如`MyTimeField.js`、`...
标签中的"ext5.0 日期 时间选择"暗示了这个实现可能与EXT5.0的日期和时间处理有关,EXT5.0提供了`Ext.Date`对象,包含了多种日期操作和格式化方法,这些方法可以用来处理用户选择的日期和时间。 在压缩包内的"日期...
本控件名为"EXT下拉日期时间控件",具有高度可定制性和灵活性,能够满足开发者对日期时间选择的精确需求。 该控件的独特之处在于它可以将日期和时间精确到秒,这意味着用户可以选择一个特定的日期,然后在时间部分...
EXT日期格式是一种在编程和数据处理中常用的日期和时间表示方式。它允许开发者精确地定义日期和时间的显示格式,从而提高代码的可读性和一致性。EXT日期格式使用各种字符来代表日期和时间的不同部分,以下是一些主要...
这里,`showTime`和`showSeconds`属性分别控制是否显示时间和秒,`format`属性则定义了日期时间的显示格式,可以根据需求进行调整。 在实际应用中,你可能还需要监听`select`事件来获取用户选定的日期和时间,以便...
标题中的“Ext3 日期范围插件”指的是在Linux操作系统中,Ext3文件系统的一种扩展功能,它允许用户对文件和目录设置特定的访问日期范围限制。Ext3是第三版扩展文件系统,是Linux下的一个日志式文件系统,广泛用于...
综上所述,EXT JS中的日期控件扩展是解决日期时间选择问题的关键,开发者需要理解EXT JS的组件体系,熟练运用继承和扩展机制,以创建或定制满足特定需求的DateTimeField控件。这不仅提高了用户体验,也丰富了EXT JS...
3. **使用时间选择器插件**:EXT JS 提供了一个时间选择器插件(`Ext.picker.DateTimePicker`),可以与日期控件一起使用,为用户提供一个完整的日期和时间选择器。我们可以在控件的配置中添加`useTimePicker: true`...
自己第一次用Ext做的时间段选择控件,是参考公司了另一同事的控件修改的希望对大家有用。
在EXTJS4中,时间控件是用于用户交互并输入日期和时间的界面元素,它提供了多种选择方式,包括年月选择、年月日选择以及年月日时分秒选择。这些控件在Web应用程序中非常常见,尤其适用于需要用户输入特定日期或时间...
1. **多语言支持**:使日期时间选择器能够适应不同的地区和语言设置。 2. **自定义格式化**:允许用户根据需要定制日期和时间的显示格式。 3. **日期范围限制**:设定可选日期范围,防止用户选择超出规定范围的日期...
标题 "Ext2的日期组件只选择年月" 暗示了我们正在讨论一个特定的JavaScript库,可能是ExtJS的旧版本(版本2),其中的一个日期选择组件。这个组件允许用户仅选择年份和月份,而不是完整的日期。ExtJS是一个流行的富...