我尝试使用自定义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的代码。 任何的想法 ?。 感谢。
答案 0 :(得分: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);
}
}
}
...
}
答案 1 :(得分:1)
当我遇到同样的问题时,我试图找到解决方案。当我将它添加到初始化时它工作正常:'在Ext.application中。
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
}
})
答案 2 :(得分:0)
可能是同一个问题但是使用Ext.data.Types它只在类型名称为大写时才有效。当小写会得到与您所看到的相似的消息时。
答案 3 :(得分:0)
您使用Ext.Loader
,以便稍后可以在某处覆盖Ext.form.field.VTypes
。尝试在实际使用之前添加vtype定义。
答案 4 :(得分:0)
您可以配置自己的电子邮件验证。
xtype:'textfield',
fieldLabel:'Email',
名称:'email',
maskRe: / [a-z0-9 _.-@+] / i ,//你可以根据你的意愿改变它 要求。