3

我正在尝试使用自定义 vtype 验证文本字段以过滤空格,例如:“”。我在 app.js 中定义了我的自定义 vtype(我使用 mvc 模式)。

    Ext.Loader.setConfig({
        enabled : true,
        paths: {
            Ext: 'vendor/ext41/src',
            My: 'app'
        } 
    });
    Ext.apply(Ext.form.field.VTypes, {
        descartarBlanco:  function(value) {
            return /^\s+$/.test(value);
        }
    });

    Ext.application({
        name: 'CRUDManantiales',
        appFolder: 'app',
        controllers: ['Ui','Usuarios'],
        ....
    });

但是,Firebug 显示此错误:

TypeError: vtypes[vtype] 不是函数

我认为语法是正确的。但是,我不知道在哪里插入 Vtype 的代码。任何想法 ?。谢谢。

4

5 回答 5

2

在呈现表单之前,我将自定义 vtypes 放在应用程序的控制器中。

Ext.define('MyApp.controller.Main', {
    extend: 'Ext.app.Controller',
    ...
    init: function () {
        var me = this;
        me.control({
            ...
            'form': {
                beforerender: this.applyVtypes
            },
            ...
        })
   },
   ...
   applyVtypes: function() {
       Ext.apply(Ext.form.field.VTypes, {
           descartarBlanco:  function(value) {
               return /^\s+$/.test(value);
           }
       }
   }
   ...    
}
于 2014-01-17T09:15:02.983 回答
1

当我遇到同样的问题时,我遇到了这个问题,试图找到解决方案。当我将它添加到 Ext.application 中的 'init:' 时,它运行良好。

    Ext.application({
            ..., 

            launch: function() { 
                ... 
            }, 

            init: function() {
                Ext.apply(Ext.form.field.VTypes, {
                    descartarBlanco:  function(value) {
                        return /^\s+$/.test(value);
                    }
                }
                console.log(Ext.form.field.VTypes); // for verification
            }
    })
于 2012-12-01T22:54:37.220 回答
1

您可以配置自己的电子邮件验证。

xtype:'textfield',
fieldLabel: 'Email',
name: 'email',
maskRe: /[a-z0-9_.-@+]/i ,//你可以根据自己的需要进行更改。

于 2013-09-27T05:51:41.913 回答
0

您使用Ext.LoadersoExt.form.field.VTypes可以稍后在某处被覆盖。尝试在实际使用之前添加 vtype 定义。

于 2012-11-18T00:04:50.753 回答
0

可能是相同的问题,但对于 Ext.data.Types,它仅在类型名称为大写时才有效。当小写字母会收到与您所看到的内容类似的消息时。

于 2012-11-16T15:02:13.703 回答