回答问题:http://www.iteye.com/problems/20038
需求是能动态设置TimeField的最大值和最小值:
首先观察源码,没有发现相关的接口.
// private
initComponent : function(){
Ext.form.TimeField.superclass.initComponent.call(this);
if(typeof this.minValue == "string"){
this.minValue = this.parseDate(this.minValue);
}
if(typeof this.maxValue == "string"){
this.maxValue = this.parseDate(this.maxValue);
}
if(!this.store){
var min = this.parseDate(this.minValue);
if(!min){
min = new Date(this.initDate).clearTime();
}
var max = this.parseDate(this.maxValue);
if(!max){
max = new Date(this.initDate).clearTime().add('mi', (24 * 60) - 1);
}
var times = [];
while(min <= max){
times.push([min.dateFormat(this.format)]);
min = min.add('mi', this.increment);
}
this.store = new Ext.data.ArrayStore({
fields: ['text'],
data : times
});
this.displayField = 'text';
}
}
它是继承combo的,所以要修改显示的值就需要对store入手,于是开始扩展,代码如下:
Ext.override( Ext.form.TimeField,{
setRangeValue : function(minValue,maxValue){
if(!Ext.isEmpty(minValue)){
this.minValue = this.parseDate(minValue);
}
if(!Ext.isEmpty(maxValue)){
this.maxValue = this.parseDate(maxValue);
}
var min = this.parseDate(this.minValue);
if(!min){
min = new Date(this.initDate).clearTime();
}
var max = this.parseDate(this.maxValue);
if(!max){
max = new Date(this.initDate).clearTime().add('mi', (24 * 60) - 1);
}
var times = [];
while(min <= max){
times.push([min.dateFormat(this.format)]);
min = min.add('mi', this.increment);
}
this.store.loadData(times);
}
});
测试代码:
function test3(){
Ext.override( Ext.form.TimeField,{
setRangeValue : function(minValue,maxValue){
if(!Ext.isEmpty(minValue)){
this.minValue = this.parseDate(minValue);
}
if(!Ext.isEmpty(maxValue)){
this.maxValue = this.parseDate(maxValue);
}
var min = this.parseDate(this.minValue);
if(!min){
min = new Date(this.initDate).clearTime();
}
var max = this.parseDate(this.maxValue);
if(!max){
max = new Date(this.initDate).clearTime().add('mi', (24 * 60) - 1);
}
var times = [];
while(min <= max){
times.push([min.dateFormat(this.format)]);
min = min.add('mi', this.increment);
}
this.store.loadData(times);
}
});
var t = new Ext.form.TimeField({
minValue: '9:00 AM',
maxValue: '6:00 PM',
increment: 30,
renderTo:document.body
});
var b = new Ext.Button({
renderTo:document.body,
text:'设置结束时间为20:00',
handler:function(){
t.setRangeValue(null,'10:00 PM')
}
})
}
Ext.onReady(test3);
分享到:
相关推荐
- **TimeField**: 时间选择器。 - **HtmlEditor**: 富文本编辑器。 #### 十、拖放(Drag and Drop) - **拖放的基本应用**: - 支持用户通过鼠标拖动元素到目标位置。 - **DD**: 拖动对象。 - **DDTarget**: 目标...
表单面板(FormPanel)和各类字段如复选框(Checkbox)、组合框(ComboBox)、日期字段(DateField)、隐藏字段(Hidden)、HTML编辑器(HtmlEditor)、数字字段(NumberField)、单选按钮(Radio)、文本区域(TextArea)、文本字段...
- **`timefield` (Ext.form.TimeField)**: 时间录入项组件,用于输入时间值。 - **`field` (Ext.form.Field)**: 表单字段组件,是所有表单元素的基类。 - **`fieldset` (Ext.form.FieldSet)**: 表单字段组组件,用于...
在Extjs开发过程中,`xtype`(扩展类型)是极为重要的一个概念。它实际上是一种类型标识符,用于快速创建特定类型的组件实例。通过使用预定义的`xtype`值,开发者可以方便地构建出各种复杂的用户界面而无需编写大量...
- `timefield`: 时间选择字段,用于选择时间。 - `field`: 表单的基础字段,所有表单组件的基类。 - `fieldset`: 表单字段集,用于组织相关表单字段。 - `hidden`: 隐藏字段,不在界面上显示,但会随表单一起...
4. 时间区域处理不当:可能未考虑到用户的本地时间区域,导致显示的时间与用户实际期望的时间不符。 5. 更新问题:在数据模型更新后,DateTimeField可能不会立即反映出这些变化。 为了解决这些问题,开发者可能需要...
- **用途**: 提供扩展功能或选项的工具栏按钮。 **Ext.Toolbar.TextItem** - **描述**: 工具栏文本项,用于在工具栏上显示文本。 - **用途**: 显示状态信息或简短提示。 #### 菜单组件 **Ext.menu.Menu** - **...
通过以上介绍可以看出,ExtJS 提供了丰富的 UI 组件库,涵盖了从基础到高级的各种类型。这些组件不仅提供了强大的功能,还具有高度可定制性,使得开发者能够轻松构建美观且功能完善的 Web 应用程序。