`
babydeed
  • 浏览: 237935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ext2 日期范围控件(2个控件)

    博客分类:
  • Ext
 
阅读更多

控件1 介绍:

 

   首先加入

Ext.apply(Ext.form.VTypes, {
    dateRangeGroup : function(val, field) {
        var date = field.parseDate(val);
        if(!date){
            return false;
        }
        if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {
           var start = field.ownerCt.ownerCt.ownerCt.items.item(0);
		   // var start = Ext.getCmp(field.startDateField);
            start.setMaxValue(date);
            this.dateRangeMax = date;
            start.validate();
        }
        else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {
            var end = field.ownerCt.ownerCt.ownerCt.items.item(1);
		   // var end = Ext.getCmp(field.endDateField);
            end.setMinValue(date);
            this.dateRangeMin = date;
            end.validate();
        }
        return true;
    }
}); 

 

 

 

 

 插件代码:

Ext.form.DateRangeGroup = Ext.extend(Ext.form.CheckboxGroup, {
    /**
    * @cfg {Boolean} allowBlank True to allow every item in the group to be blank (defaults to false). If allowBlank = 
    * false and no items are selected at validation time, {@link @blankText} will be used as the error text.
    */
    allowBlank: false,
    /**
    * @cfg {String} blankText Error text to display if the {@link #allowBlank} validation fails (defaults to "You must 
    * select one item in this group")
    */
    blankText: "You must select all items in this group",

    // private
    defaultType: 'radio',
	
	height:20,
    // private
    groupCls: 'x-form-radio-group',

    // private
    columns: [.46, .07, .46],

    /**
    * @cfg {String} token The string used to join and separate the values of the individual fields
    * (defaults to ',').
    */
    token: '|',

    // private
    israwvalue: true,

    // private
    validateText: "The first item's value must less-than/equal the second item's value",

    // private
    validateValue: function(value) {
        if (!this.allowBlank) {
            var blank = false;
            this.items.each(function(f) {
                if (!f.getValue()) {
                    blank = true;
                }
            }, this);
            if (blank) {
                this.markInvalid(this.blankText);
                return false;
            }

            var v1 = this.items.items[0].getValue();
            var v2 = this.items.items[1].getValue();

            if (v1 > v2) {
                this.markInvalid(this.validateText);
                return false;
            }
        }

        return true;
    },

    // private
    initValue: function() {
        if (this.value !== undefined) {
            this.setValue(this.value);
        }
    },

    /**
    * Returns the raw data value which may or may not be a valid, defined value.  To return a normalized value see {@link #getValue}.
    * @return {Mixed} value The field value
    */
    getRawValue: function() {
        var v = '';
        if (this.rendered) {
            this.items.each(function(f) {
                if (f.isFormField) {
                    //if(v.length)v+=this.token;
                    if (this.israwvalue) {
                        v += f.getRawValue();
                    }
                    else {
                        v += f.getValue();
                    }
                    v += this.token;
                }
            }, this);
        } else Ext.value(this.value, '');
        if (v === this.emptyText) {
            v = '';
        }
        else {
            v = v.slice(0, -1);
        }

        return v;
    },

    /**
    * Returns the normalized data value (undefined or emptyText will be returned as '').  To return the raw value see {@link #getRawValue}.
    * @return {Mixed} value The field value
    */
    getValue: function() {
        var v = this.getRawValue();

        return v;
    },

    /**
    * Sets the underlying DOM field's value directly, bypassing validation.  To set the value with validation see {@link #setValue}.
    * @param {Mixed} value The value to set
    * @return {Mixed} value The field value that is set
    */
    setRawValue: function(v) {
        var val = '';
        var i = 0;
        if (v.length) var vs = v.split(this.token);
        else {
            var vs = [];
            for (i = 0; i < this.items.length; i++) {
                vs[i] = '';
            }
        }
        i = 0;
        this.items.each(function(f) {
            if (i >= vs.length) return false;
            if (f.isFormField) {
                if (this.israwvalue) {
                    f.setRawValue(vs[i]);
                }
                else {
                    f.setValue(vs[i]);
                }
                if (val.length) val += this.token;
                val += vs[i++];
            }
            return true;
        }, this);
    },

    /**
    * Sets a data value into the field and validates it.  To set the value directly without validation see {@link #setRawValue}.
    * @param {Mixed} value The value to set
    */
    setValue: function(v) {
        this.value = v;
        if (this.rendered) {
            this.value = this.setRawValue(v);
            this.validate();
        }
    },

    items: [
		{ name: 'dtrg-auto1', xtype: 'datefield',readOnly: true,vtype:"dateRangeGroup", endDateField: 'dtrg-auto-2'},
		{ name: 'dtrg-auto-sep', xtype: 'label', html: '<div align=left style="padding-top:4px"><b>至</b></div>' },
		{ name: 'dtrg-auto-2', xtype: 'datefield',startDateField:"dtrg-auto1",vtype:"dateRangeGroup", readOnly: true}
	]
});

Ext.reg('daterangegroup', Ext.form.DateRangeGroup);

 

使用例子

{
									xtype : "daterangegroup",
									fieldLabel : "日期范围",
									width:250
}

 

 注 2.0版本无效 因为2.0无CheckboxGroup控件

 

 

 

控件2 介绍

     第2个日期范围插件来自 http://www.sencha.com/forum/showthread.php?90111-Ext.ux.form.DateRange      此插件是基于ext3版本的 我做了少许修改 因为我用的版本是2.0.2

首先上显示效果图

 

 

 

 

此例以及修改后插件代码见附件

注 此例本人使用ext版本2.0.2  在ie7,搜狗,火狐浏览器下测试没问题 在chrome浏览器下显示会有些问题

还有的问题是 开始和结束日期的验证没有做好

 

 

另附extjs技术交流群:164648099

  • 大小: 4.4 KB
  • 大小: 39.6 KB
分享到:
评论

相关推荐

    ext日期时间控件2

    总之,EXT日期时间控件2是EXT框架中一个实用且灵活的组件,为用户提供了便捷的时间选择体验。它适用于需要精确到小时和分钟的时间输入的Web应用,且具备高度的定制性和可扩展性,是现代Web开发中的重要工具之一。

    EXT日期加时间控件

    EXT日期加时间控件 EXT日期加时间控件

    Ext时间日期选择控件,精确到秒

    在EXTJS框架中,时间日期选择控件是一个重要的组件,特别是在构建用户界面时,需要用户输入精确的时间或日期信息。EXTJS 5.0及更高版本提供了更丰富的功能和改进的用户体验,使得开发者能够创建更加直观和用户友好的...

    ext 下拉日期时间控件

    4. 绑定事件监听器,处理用户的选择行为,例如,当用户选择了一个日期时间后,更新后台数据或者执行其他业务逻辑。 EXT库提供了丰富的API和文档,帮助开发者理解和使用这些控件。对于`Ext.form.field....

    ext 日期时间控件

    EXT的时间控件不仅提供了基本的日期和时间选择功能,还支持自定义格式化、日期范围限制、验证等功能,使开发者能够灵活地调整控件的行为和外观。 EXT时间控件的实现基于Ext.form.DateTimeField类,这个类继承自Ext....

    ext 4.0 日期选择控件 时分秒 中文版

    这个"EXT 4.0 日期选择控件 时分秒 中文版"显然是一个经过本地化处理的版本,支持中文显示,并且在选择日期的同时还能选择具体的时间,精确到时、分、秒。 日期选择控件在Web应用中非常常见,用于用户输入或选择...

    Ext日期时间控件 Spinner控件 Ext代码 Extjs Grid

    控件支持多种格式化选项,可以自定义日期的显示方式,还允许设置最小和最大日期范围,以限制用户的选取范围。此外,`ExtJS`还提供了`Ext.picker.Time`类,专门用于处理时间的选择。 接下来是`Spinner控件`,它通常...

    ext4 年月时间控件 年月日时间控件 年月日时分秒时间控件

    2. **年月选择器**:这种控件允许用户仅选择年份和月份,通常适用于只需要知道大致日期的情况,例如统计数据的筛选或者周期性事件的设定。 3. **年月日选择器**:比年月选择更进一步,用户可以选择具体的日期。这种...

    Ext做的时间段选择控件

    自己第一次用Ext做的时间段选择控件,是参考公司了另一同事的控件修改的希望对大家有用。

    Ext扩展dateField时间控件,可以选择年月日、年月、年、月

    2. **自定义格式**:根据不同的选择模式,控件应能显示和接受不同的日期格式。例如,当选择年月日时,日期格式可能是`YYYY-MM-DD`;当选择年月时,可能是`YYYY-MM`。 3. **验证功能**:在用户选择日期后,扩展的`...

    带时分秒的EXT日期控件

    /** * 此组件为带时分秒的日期控件,在原DateTimeField修改 * 此功能较以前版本增加功能 * 1,在GRID中使用时,增加单元格处于编辑状态时的初始化此控件值 * 2,增加操作日选择器时初始化时分秒功能 * 3,增加点击...

    基于Ext2的日历控件和IP地址输入控件.zip

    在Ext2中,日历控件可能包括基本的日期选择、日期范围选择、月份和年份导航等功能。开发者可以自定义其样式、行为和交互方式,以满足不同应用的需求。 2. **IP地址输入控件**: IP地址输入控件则是为了确保用户能...

    EXT js 4带时间的日期控件

    EXT JS 4 的日期控件(`Ext.form.field.Date`)通常用于让用户选择一个日期。默认情况下,它只显示日期部分,但通过扩展或配置,我们可以让它包含时间选择。这个控件基于浏览器的原生日期选择器进行增强,提供了一种...

    Ext DateField控件 - 只选择年月

    "Ext DateField控件 - 只选择年月"这个主题聚焦于一个特定的UI组件,用于帮助用户仅选择日期中的年份和月份部分,而忽略具体的日期。这在处理诸如生日、合同有效期等只需要年月信息的场景时非常有用。 Ext JS是一个...

    ext日期控件时分秒

    在EXT JS这个强大的JavaScript框架中,日期控件是常见的组件之一,用于用户输入或选择日期。然而,标准的EXT JS日期字段(DateTimeField)默认仅支持日和月的选择,不包含时间部分,即小时、分钟和秒。为了解决这个...

    Ext日期控件显示农历,及其周末高亮显示

    扩展Ext日期控件,使其显示农历、让星期六、星期天高亮显示。 先有两种实现方式,一为重写Date.DatePicker和Ext.form.DateField控件的相应方法、另一种为单独做一个扩展扩建。 本JS文件在Ext3.1测试通过、若果要在...

    Ext控件大全,适合新手学习

    根据提供的文件信息,我们可以深入探讨Ext控件的相关知识点。标题提到的是“Ext控件大全”,并且描述中指出这些资料非常适合IT人士尤其是新手学习使用。接下来,我们将基于此内容详细解析Ext控件的基础知识、应用...

    ext4.2 日历日期控件,可以选择时分秒

    "ext4.2 日历日期控件,可以选择时分秒"是一个专门针对这个需求的组件,它允许用户在网页应用中方便地选择日期、时间和秒数。这个控件是EXTJS库的一个组成部分,EXTJS是一个基于JavaScript的富客户端应用框架,广泛...

    基于Ext2的日历控件和IP地址输入控件

    日历控件允许用户选择日期或日期范围,常见于事件管理、预订系统等应用场景。EXTJS 2.2中的日历控件可能需要开发者手动编写一些额外的代码来实现日历视图的布局和交互,包括切换月份、添加事件等功能。开发者需要...

Global site tag (gtag.js) - Google Analytics