`
atian25
  • 浏览: 470292 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ExtJS 扩展TimeField,设置时间区域

EXT 
阅读更多

回答问题: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);
 
分享到:
评论

相关推荐

    extjs的快速入门教程

    - **TimeField**: 时间选择器。 - **HtmlEditor**: 富文本编辑器。 #### 十、拖放(Drag and Drop) - **拖放的基本应用**: - 支持用户通过鼠标拖动元素到目标位置。 - **DD**: 拖动对象。 - **DDTarget**: 目标...

    ExtJS基础教程.pdf

    表单面板(FormPanel)和各类字段如复选框(Checkbox)、组合框(ComboBox)、日期字段(DateField)、隐藏字段(Hidden)、HTML编辑器(HtmlEditor)、数字字段(NumberField)、单选按钮(Radio)、文本区域(TextArea)、文本字段...

    ExtJs xtype一览

    - **`timefield` (Ext.form.TimeField)**: 时间录入项组件,用于输入时间值。 - **`field` (Ext.form.Field)**: 表单字段组件,是所有表单元素的基类。 - **`fieldset` (Ext.form.FieldSet)**: 表单字段组组件,用于...

    Extjs xtype集合

    在Extjs开发过程中,`xtype`(扩展类型)是极为重要的一个概念。它实际上是一种类型标识符,用于快速创建特定类型的组件实例。通过使用预定义的`xtype`值,开发者可以方便地构建出各种复杂的用户界面而无需编写大量...

    ExtJS的xtype列表

    - `timefield`: 时间选择字段,用于选择时间。 - `field`: 表单的基础字段,所有表单组件的基类。 - `fieldset`: 表单字段集,用于组织相关表单字段。 - `hidden`: 隐藏字段,不在界面上显示,但会随表单一起...

    Ext-DateTimeField

    4. 时间区域处理不当:可能未考虑到用户的本地时间区域,导致显示的时间与用户实际期望的时间不符。 5. 更新问题:在数据模型更新后,DateTimeField可能不会立即反映出这些变化。 为了解决这些问题,开发者可能需要...

    extjs控件列表

    - **用途**: 提供扩展功能或选项的工具栏按钮。 **Ext.Toolbar.TextItem** - **描述**: 工具栏文本项,用于在工具栏上显示文本。 - **用途**: 显示状态信息或简短提示。 #### 菜单组件 **Ext.menu.Menu** - **...

    Ext组件描述,各个组件含义

    通过以上介绍可以看出,ExtJS 提供了丰富的 UI 组件库,涵盖了从基础到高级的各种类型。这些组件不仅提供了强大的功能,还具有高度可定制性,使得开发者能够轻松构建美观且功能完善的 Web 应用程序。

Global site tag (gtag.js) - Google Analytics