我需要一种允许我应用掩码的文本字段
- 过滤输入
- 应用一些默认文本
这是键入时应该是什么样子的示例
在场模糊之后
这两个值都需要存储在单独的属性中,而整个字段需要用一个对象设置并且需要返回一个。我已经得到了一个可以使用对象设置并返回一个字段的字段,但我不知道如何应用蒙版。
任何帮助或建议表示赞赏!
编辑:
这是我到目前为止得到的:示例
Ext.define('Ext.ux.form.Field', {
extend: 'Ext.form.field.Base',
alias: 'widget.maskfield',
initComponent: function() {
this.callParent(arguments);
},
setValue: function(value) {
var me = this;
me.setRawValue(me.valueToRaw(value));
return me.mixins.field.setValue.call(me, value);
},
valueToRaw: function(value) {
var empty = {},
me = this,
len = this.properties.length,
i = 0;
for(;i<len;i++) {
var prop = this.properties[i];
empty[prop] = this.value ? this.value[prop] || 0 : 0;
}
return Ext.value(value, empty);
},
transformRawValue: function(value) {
var v = this.getValue(),
s = v.split(',');
return s[0] + 'J' + s[1] + 'M';
},
setRawValue: function(value) {
var me = this,
value = Ext.value(me.transformRawValue(value), '');
me.rawValue = value;
// Some Field subclasses may not render an inputEl
if (me.inputEl) {
me.inputEl.dom.value = value;
}
return value;
},
getValue: function() {
var me = this,
len = this.properties.length,
i = 0,
value = '';
for(;i<len;i++) {
if(!this.value)
value = '';
else if (!value)
value = this.value[this.properties[i]];
else
value += ','+this.value[this.properties[i]];
}
return value
},
// should overwrite the mixin
isEqual: function(obj1,obj2) {
var me = this,
p;
for(p in obj1) {
if(typeof(obj2[p])=='undefined') {return false;}
}
for(p in obj1) {
var prop;
if (prop = obj1[p]) {
switch(typeof(prop)) {
case 'object':
if (!me.equals(prop, obj2[p])) { return false; }
break;
case 'function':
return false;
break;
default:
if (prop != obj2[p]) { return false; }
}
} else {
if (obj2[p])
return false;
}
}
for(p in obj2) {
if(typeof(obj1[p])=='undefined') {return false;}
}
return true;
}
});