/*** * 支持千分位NumberField * * @author yingp */ Ext.define('erp.view.core.form.SeparNumber', { extend: 'Ext.form.field.Number', alias: 'widget.separnumberfield', initComponent: function(){ var me = this; me.hideTrigger = true; me.subTplData = me.subTplData || {}; Ext.apply(me.subTplData, { suffix : '-separ', enableSeparator : true }); me.callParent(arguments); }, fieldSubTpl: [ ' name="{name}{suffix}"', ' value="{value:this.formatValue}"', ' placeholder="{placeholder}"', '{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}', ' readonly="readonly"', ' disabled="disabled"', ' tabIndex="{tabIdx}"', ' style="{fieldStyle}"', ' class="{fieldCls} {typeCls} {editableCls} {inputCls}" autocomplete="off"/>', 'name="{name}" ', ' value="{[Ext.util.Format.htmlEncode(values.value)]}"', 'size="{size}" ', 'tabIndex="{tabIdx}" ', 'class="{fieldCls} {typeCls}" autocomplete="off" />', '', { showNumberField : function(e) { return e === true ? 'none' : 'block'; }, showTextField : function(e) { return e === true ? 'block' : 'none'; }, formatValue : function(v) { v = isNaN(v) ? '0' : v; return Ext.util.Format.number(String(v), "0,000,000.00"); } } ], listeners : { afterrender : function() { var me = this, n = me.getInputId(), s = n + me.subTplData.suffix; me.numberEl = Ext.get(n); me.textEl = Ext.get(s); var c = Ext.Function.bind(me.changeEditStatus, me); Ext.EventManager.on(me.numberEl, { blur : c, scope : me, buffer : 100 }); Ext.EventManager.on(me.textEl, { focus : c, scope: me, buffer : 100 }); setTimeout(function(){ if(me.textEl) me.textEl.dom.value = me.formatValue(me.getValue()); }, 200); }, change : function() { if(this.textEl) this.textEl.dom.value = this.formatValue(this.getValue()); } }, changeEditStatus : function(e) { var me = this; if (e && e.type == 'focus') { me.textEl.dom.style.display = 'none'; me.numberEl.dom.style.display = 'block'; me.numberEl.dom.focus(); me.numberEl.dom.select(); } else { me.numberEl.dom.style.display = 'none'; me.textEl.dom.style.display = 'block'; me.textEl.dom.value = me.formatValue(this.getValue()); } }, formatValue : function(v) { v = isNaN(v) ? '0' : v; return Ext.util.Format.number(String(v), "0,000,000.00"); }, setFieldStyle : function(s) { var me = this; me.callParent(arguments); setTimeout(function(){ if(me.textEl) me.textEl.setStyle(s); }, 200); } });