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

ExtJS 扩展TimeField,设置时间区域

阅读更多

回答问题: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扩展例子集

    这个"EXTJS扩展例子集"显然是一个包含EXTJS3.0相关扩展组件的资源包,旨在帮助开发者理解和学习如何使用这些扩展。 在EXTJS中,扩展(Extensions)通常是指对框架原有功能的增强或定制,它们可以是新的组件、小部件...

    Extjs TimeField 显示正常时间格式的代码

    具体来说,这里提供的代码通过Extjs的override方法扩展了TimeField类,重写了setValue和formatValue函数。在这个重写的过程中,首先判断传入的值v的长度是否超过8位,这是根据时间戳的长度来判断的。如果超过8位,就...

    ExtJs:收集基于ExtJs扩展的一些控件

    通过学习和使用这些扩展控件,开发者可以提高代码的复用性,减少开发时间,并提升应用程序的灵活性。 接着是“ExtJs:收集基于ExtJs扩展的一些控件2”。这可能是对另一批ExtJs扩展控件的介绍,可能包含了一些新的或...

    Extjs扩展DateTimeField时间初始化及点击日期显示Bug

    本文将深入探讨“Extjs扩展DateTimeField时间初始化及点击日期显示Bug”这一主题,帮助开发者解决实际开发中遇到的难题。 DateTimeField是EXTJS中用于处理日期和时间选择的组件,它允许用户同时选择日期和时间,...

    extjs扩展教程 网页版

    extjs扩展教程 extjs扩展教程extjs扩展教程

    extjs扩展年度控件,EXTJS里的时间控件的年度重写

    然而,有时开发人员可能需要对这些控件进行自定义,以满足特定业务需求,比如在本例中,我们需要扩展EXTJS的时间控件以实现“年度”选择的功能。 EXTJS的Date Picker默认提供了日、月、年的选择,但可能并不完全...

    ExtJs DWR扩展 DWRProxy、DWRTreeLoader、DWRGridProxy

    在标题和描述中提到的“ExtJs DWR扩展”是指将这两者结合使用,以增强数据交换和UI更新的能力。 1. **DWRProxy**: DWRProxy是ExtJs中的一个类,它作为DWR和ExtJs之间的桥梁,使得ExtJs可以利用DWR的远程调用功能。...

    extjs4.2 日期控件 datefield 拓展加上选择时分秒功能

    在ExtJs4.2表单控件里分别有个时间控件(datafield)和时间控件(timefield),但是官方提供的控件不能将日期和时分秒整合到一起,我从网上搜集整理了一个可用的选择日期时分秒的拓展控件,extjs版本是4.2,亲测能用,...

    Extjs6 日期时间控件

    时间控件(TimeField)则是在日期控件基础上的扩展,让用户能够选择具体的时间。EXTJS6中,时间选择通常是通过一个下拉的小时和分钟列表实现,用户可以通过组合这些选项来设定精确时间。时间格式同样可以通过`format...

    extjs扩展包

    本文是extjs的扩展包,可以在页面中插入图片,把这个js文件放入相应的目录下,extjs就是引用这个类型,就可以插入图片

    Extjs树分页组件扩展

    "Extjs树分页组件扩展"就是为了解决这一问题而设计的,它通过扩展TreeLoader和PagingToolbar,实现了在树形组件中进行分页加载的效果。 **TreeLoader的扩展** TreeLoader是ExtJS中负责异步加载树节点的类。在原生...

    ExtJS扩展包(ExtJsExtenderControl)

    ExtJS扩展包(ExtJsExtenderControl)是针对ExtJS框架的一个增强工具,它扩展了ExtJS的功能,特别是在与.NET框架结合使用时,为开发者提供了更丰富的控件和功能。ExtJS是一个流行的JavaScript库,用于构建富客户端...

    extjs扩展标记

    例如,创建一个简单的GridPanel,只需在JSP页面中插入对应的EXTJS标签,并设置相关属性即可。 5. **优势与好处**:使用EXTJS扩展标记可以提高代码的可读性和可维护性,减少重复代码,加快开发速度。同时,由于EXTJS...

    extjs时间控件精确秒

    在EXTJS这个强大的JavaScript框架中,时间控件是开发者经常使用的组件之一,尤其在构建复杂的Web应用程序时。EXTJS的时间控件允许用户选择或输入时间,通常以小时、分钟和秒为单位,提供了用户友好的界面和丰富的...

    dreamweaver Extjs 扩展插件语法提示

    dreamweaver Extjs 扩展插件语法提示 在dreamweaver中可以显示Extjs语法提示,提升开发效率,用起来很方便 分.zxp和.mxp两种扩展 cc2015,cs6均可用。 扩展安装需要到用Adobe Extension Manager,请自行在网上百度,...

    extjs6 datetimefield 扩展时间控件 分时秒控件

    在给定的场景下,"extjs6 datetimefield 扩展时间控件 分时秒控件"描述了一个针对EXTJS6的`datetimefield`组件的增强,目的是增加对小时、分钟和秒钟的单独选择功能。 EXTJS6是Sencha公司推出的一个强大的...

    extjs3.2、3.3 时间控件 日期控件扩展

    总之,“extjs3.2、3.3 时间控件 日期控件扩展”是关于如何在ExtJS 3.x版本中使用和自定义日期及时间选择器的知识点,涵盖了基本使用、扩展开发、实际应用等多个方面。通过深入理解这些概念,开发者可以创建出更加...

    extjs扩展的月份控件

    同事写的extjs月份扩展控件,可以直接调用,用于只要求显示月份不显示日期的项目

    ExtJS 组件扩展

    ### ExtJS 组件扩展知识点详解 #### 一、ExtJS组件扩展概述 ExtJS是一款基于JavaScript的开源前端框架,主要用于构建复杂的企业级Web应用程序。它提供了丰富的UI组件库,可以帮助开发者快速构建美观且功能强大的...

Global site tag (gtag.js) - Google Analytics