/***
* 支持千分位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);
}
});