1

我需要一种允许我应用掩码的文本字段

  1. 过滤输入
  2. 应用一些默认文本

这是键入时应该是什么样子的示例

在此处输入图像描述

在场模糊之后

在此处输入图像描述

这两个值都需要存储在单独的属性中,而整个字段需要用一个对象设置并且需要返回一个。我已经得到了一个可以使用对象设置并返回一个字段的字段,但我不知道如何应用蒙版。

任何帮助或建议表示赞赏!

编辑:

这是我到目前为止得到的:示例

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;
    }

});
4

0 回答 0