Ext.define('BM.ux.MoneyFiled', { extend:'Ext.form.NumberField', alias: 'widget.moneyfield', trulyValue:null, setValue: function(v){ if(isNaN(v)){ this.setRawValue(''); this.trulyValue = null; }else{ this.setRawValue(this.getFormatValue(v)); this.trulyValue = v; } }, getFormatValue:function(v){ v = typeof v == 'number' ? v : Number(v); v = isNaN(v) ? '' : formatMoney(v); return v; }, getSubmitValue: function() { return this.trulyValue; }, onChange: function(v) { this.toggleSpinners(); this.callParent(arguments); this.trulyValue = this.parseValue(v); }, validateValue: function(value){ var num = this.parseValue(value); if (isNaN(num) && num.length > 0) { this.markInvalid(String.format(this.nanText, value)); return false; } return Ext.form.NumberField.superclass.validateValue.call(this, num); }, onBlur : function() { this.setValue(this.trulyValue); }, onFocus:function(){ this.setRawValue(this.trulyValue); }, parseValue: function(value){ value = parseFloat(String(value).replace(this.decimalSeparator, ".").replace(/,/g, "")); return isNaN(value) ? '' : value; }, getErrors: function(value) { return Ext.form.NumberField.superclass.getErrors.call(this,this.trulyValue); } });
/*将数字转换为千位符*/ function formatMoney(v) { if(isNaN(v)){ return v; } v = (Math.round((v - 0) * 100)) / 100; v = (v == Math.floor(v)) ? v + "" : ((v * 10 == Math.floor(v * 10)) ? v + "0" : v); v = String(v); var ps = v.split('.'); var whole = ps[0]; var sub = ps[1] ? '.' + ps[1] : ''; var r = /(\d+)(\d{3})/; while (r.test(whole)) { whole = whole.replace(r, '$1' + ',' + '$2'); } v = whole + sub; return v; }
交互过程:在控件失去焦点的时候显示为千位符显示,鼠标移入变为正常数值显示。
开发过程记录:
1.重写getSubmitValue 让表单提交的时候获取的是真实的值
2.在onChange事件中动态更新 trulyValue
3.重写getErrors方法使得表单验证的时候获取的是真实的值
相关推荐
6. tbseparator - xtype: 'tbseparator', 描述: 工具栏分隔符 7. tbtext - xtype: 'tbtext', 描述: 工具栏文本项 8. tbsplit - xtype: 'tbsplit', 描述: 工具栏分隔按钮 9. tb spacer - xtype: 'tb spacer', 描述: ...
labelSeparator :':', //分隔符 labelWidth : 50, //标签宽度 width : 150, //字段宽度 allowBlank : false, //是否允许为空 blankText : '不允许为空', labelAlign : 'left', //标签对齐方式 msgTarget...
ExtJS完全基于纯JavaScript,不依赖于任何浏览器插件,这使其能够在多种主流浏览器上无缝运行。 #### 二、ExtJS的特点 1. **跨浏览器兼容性**:ExtJS支持包括IE、Firefox、Chrome、Safari等在内的主流浏览器,确保...
6. **`tbseparator`** - `Ext.Toolbar.Separator`,工具栏分隔符,用于分割工具栏上的不同部分。 7. **`tbspacer`** - `Ext.Toolbar.Spacer`,工具栏空白,用于创建固定的空白区域。 8. **`tbsplit`** - `Ext....
- **`tbseparator` (Ext.Toolbar.Separator)**: 工具栏分隔符组件,用于分隔工具栏上的不同元素。 - **`tbspacer` (Ext.Toolbar.Spacer)**: 工具栏空白组件,用于在工具栏上留出空白区域。 - **`tbsplit` (Ext....
- `toolbar`: 创建工具栏,可以放置按钮、分隔符、文本等元素。 - `tbbutton`: 工具栏上的按钮。 - `tbfill`: 占位符,用于填充工具栏空间。 - `tbitem`: 工具栏的基本项,可以是任何组件。 - `tbseparator`: ...
6. **`tbseparator`:** 工具栏分隔符组件,用于在工具栏中插入分隔线,通过`Ext.Toolbar.Separator`类实现。 7. **`tbspacer`:** 工具栏空白组件,用于在工具栏中插入空白区域,通过`Ext.Toolbar.Spacer`类实现。 ...
- `tbseparator`:`Ext.Toolbar.Separator`,在工具栏上创建分隔符。 - `tbspacer`:`Ext.Toolbar.Spacer`,工具栏的空格。 - `tbsplit`:`Ext.Toolbar.SplitButton`,工具栏的分隔按钮。 - `tbtext`:`Ext....
- **Separator**: `Ext.Toolbar.Separator`,工具栏分隔符。 - **Spacer**: `Ext.Toolbar.Spacer`,工具栏空白区域。 - **SplitButton**: `Ext.Toolbar.SplitButton`,工具栏上的分裂按钮。 - **TextItem**: `...
- **描述**: 工具栏上的分隔符。 7. **`tbspacer`:** - **`xtype`**: `tbspacer` - **`Class`**: `Ext.Toolbar.Spacer` - **描述**: 工具栏上的空白填充。 8. **`tbsplit`:** - **`xtype`**: `tbsplit` - ...
- **描述**: 工具栏分隔符,用于在工具栏项之间添加视觉分隔。 - **用途**: 分组工具栏上的按钮或其他项目。 **Ext.Toolbar.Spacer** - **描述**: 工具栏空白,用于创建工具栏上的空白区域。 - **用途**: 保持工具...
4.2 为框架顺利运行提供支持 / 107 4.2.1 平台检测工具:ext.is / 107 4.2.2 当前运行环境检测工具:ext.supports / 109 4.3 ext js的静态方法 / 112 4.3.1 概述 / 112 4.3.2 ext.object中的静态方法 / 113 ...