`
喧嚣求静
  • 浏览: 580134 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

扩展ExtJS numberfield支持千位分隔符(一)

 
阅读更多
在项目需求中,需要把金额数据

Ext.ux.NuberFiledFormat=Ext.extend(Ext.form.NumberField, {
    baseChars: "0123456789,",
    setValue: function(v){
        v = typeof v == 'number' ? v : String(v).replace(this.decimalSeparator, ".").replace(/,/g, "");
         v = isNaN(v) ? '' : rendererZhMoney(v);
        
        //Ext.util.Format.number(this.fixPrecision(String(v)), "0,000,000.00");此为ext 4.0 
            this.setRawValue(v);
        return Ext.form.NumberField.superclass.setValue.call(this, v);
    },
   /* getValue:function(){
    	//alert((String(Ext.form.NumberField.superclass.getValue.call(this)).replace(",","")));
    	return (String(Ext.form.NumberField.superclass.getValue.call(this)).replace(",",""));
    },
    */
    fixPrecision: function(value){
        var nan = isNaN(value);
        if (!this.allowDecimals || this.decimalPrecision == -1 || nan || !value) {
            return nan ? '' : value;
        }
        return parseFloat(value).toFixed(this.decimalPrecision);
    },
    validateValue: function(value){
        if (!Ext.form.NumberField.superclass.validateValue.call(this, value)) {
            return false;
        }
        if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid
            return true;
        }
        value = String(value).replace(this.decimalSeparator, ".").replace(/,/g, "");
        if (isNaN(value)) {
            this.markInvalid(String.format(this.nanText, value));
            return false;
        }
        var num = this.parseValue(value);
        if (num < this.minValue) {
            this.markInvalid(String.format(this.minText, this.minValue));
            return false;
        }
        if (num > this.maxValue) {
            this.markInvalid(String.format(this.maxText, this.maxValue));
            return false;
        }
        return true;
    },
    parseValue: function(value){
        value = parseFloat(String(value).replace(this.decimalSeparator, ".").replace(/,/g, ""));
        return isNaN(value) ? '' : value;
    }
});
//注册扩展后的数字控件
Ext.reg('numberFieldFormat', Ext.ux.NuberFiledFormat);

注意:
上面代码中rendererZhMoney(v);js方法请参照

js 金额格式化
[url]http://913.iteye.com/blog/1638736
[/url]

-------------------------------------------------------------------------

使用示例
//在控件中指定xtype即可
 xtype:"numberFieldFormat"


显示效果


好了,显示问题解决了,但在提交数据时,会把格式化后的数据提交,包含千分符,
关于处理提交问题,下一篇再讨论
  • 大小: 1.4 KB
0
2
分享到:
评论

相关推荐

    extjs中的xtype的所有类型介绍

    6. tbseparator - xtype: 'tbseparator', 描述: 工具栏分隔符 7. tbtext - xtype: 'tbtext', 描述: 工具栏文本项 8. tbsplit - xtype: 'tbsplit', 描述: 工具栏分隔按钮 9. tb spacer - xtype: 'tb spacer', 描述: ...

    extjs4的Ext.frorm.Panel控件属性说明和表单控件说明

    labelSeparator :':', //分隔符 labelWidth : 50, //标签宽度 width : 150, //字段宽度 allowBlank : false, //是否允许为空 blankText : '不允许为空', labelAlign : 'left', //标签对齐方式 msgTarget...

    ExtJS基础教程.pdf

    7. **菜单类和工具栏**:包含菜单(Menu)、菜单项(Item)、适配器(Adapter)、工具栏(Toolbar)、分隔符(Separator)、文本项(TextItem)、填充(Fill)、按钮(Button)和分割按钮(SplitButton),为应用提供导航和操作界面。...

    ExtJs xtype一览

    - **`tbseparator` (Ext.Toolbar.Separator)**: 工具栏分隔符组件,用于分隔工具栏上的不同元素。 - **`tbspacer` (Ext.Toolbar.Spacer)**: 工具栏空白组件,用于在工具栏上留出空白区域。 - **`tbsplit` (Ext....

    ExtJs组件类的对应表

    6. **`tbseparator`** - `Ext.Toolbar.Separator`,工具栏分隔符,用于分割工具栏上的不同部分。 7. **`tbspacer`** - `Ext.Toolbar.Spacer`,工具栏空白,用于创建固定的空白区域。 8. **`tbsplit`** - `Ext....

    extJs xtype 类型

    6. **`tbseparator`:** 工具栏分隔符组件,用于在工具栏中插入分隔线,通过`Ext.Toolbar.Separator`类实现。 7. **`tbspacer`:** 工具栏空白组件,用于在工具栏中插入空白区域,通过`Ext.Toolbar.Spacer`类实现。 ...

    ExtJS的xtype列表

    ExtJS 是一个强大的JavaScript应用程序框架,它提供了丰富的用户界面组件,用于构建富客户端应用。`xtype` 是ExtJS中的一个重要概念,它是组件类的简写形式,用于在配置对象中声明组件类型,使得代码更加简洁。理解...

    ExtJs_xtype一览

    - `tbseparator`:`Ext.Toolbar.Separator`,在工具栏上创建分隔符。 - `tbspacer`:`Ext.Toolbar.Spacer`,工具栏的空格。 - `tbsplit`:`Ext.Toolbar.SplitButton`,工具栏的分隔按钮。 - `tbtext`:`Ext....

    Extjs实用教程

    - **Separator**: `Ext.Toolbar.Separator`,工具栏分隔符。 - **Spacer**: `Ext.Toolbar.Spacer`,工具栏空白区域。 - **SplitButton**: `Ext.Toolbar.SplitButton`,工具栏上的分裂按钮。 - **TextItem**: `...

    Extjs xtype集合

    - **描述**: 工具栏上的分隔符。 7. **`tbspacer`:** - **`xtype`**: `tbspacer` - **`Class`**: `Ext.Toolbar.Spacer` - **描述**: 工具栏上的空白填充。 8. **`tbsplit`:** - **`xtype`**: `tbsplit` - ...

    extjs帮助文档pdf版

    - **用途**:提供了一个统一的入口来访问 ExtJS 库的功能,如创建组件、管理事件等。 - **常用方法**: - `Ext.create()`: 创建一个组件实例。 - `Ext.getCmp(id)`: 根据组件 ID 获取组件实例。 - `Ext.each()`: ...

    extjs控件列表

    - **描述**: 工具栏分隔符,用于在工具栏项之间添加视觉分隔。 - **用途**: 分组工具栏上的按钮或其他项目。 **Ext.Toolbar.Spacer** - **描述**: 工具栏空白,用于创建工具栏上的空白区域。 - **用途**: 保持工具...

    Ext Js权威指南(.zip.001

    2.9 为本书示例准备一个模板 / 60 2.10 本章小结 / 61 第3章 调试工具及技巧 / 62 3.1 使用firebug进行调试 / 62 3.2 在ie中调试 / 76 3.2.1 使用debugbar和companion.js调试 / 76 3.2.2 使用ietester测试 / ...

Global site tag (gtag.js) - Google Analytics