我是extjs的新手。我想知道,是否可以进行动态vtype验证,如下面的代码...
customRegEX = /^[a-z0-9]/i
customMsg = 'Must be an alphanumeric word'
function ConstructVtype(customRegEX,customMsg)
{
var custExp = customRegEX;
Ext.apply(Ext.form.VTypes, {
AlphaNum: function(v,field) {
return /^[a-z0-9]/i.test(v); // instead of this code
return custExp.test(v);
},
AlphaNumText: customMsg,
AlphaNumMask: custExp
});
}
但我在行return custExp.test(v);
中收到错误(对象不支持此方法)
因为在对象(custExp
)
是否可以将custExp
类型转换为包含测试方法的对象
如果上述点可能意味着pls提供该对象类型以及如何进行类型转换? 要么 提供如何以不同方式实现此功能。
嗨“Alexander Gyoshev”感谢您的重播
如果按照你的推荐做其工作人员,但我需要通过文本字段更改动态更改正则表达式值,如下面的代码怎么做这个人
function ConstructVtype()
{
var customRegEX = this.customRegEX; ////^[a-z0-9]/i,
customMsg =this.customErrorMsg;
Ext.apply(Ext.form.VTypes, {
AlphaNum: function(v,field) {
return customRegEX.test(v);
},
AlphaNumText: customMsg,
AlphaNumMask: customRegEX
});
}
var txt = new Ext.form.TextField({
renderTo:Ext.getBody(),
validator :ConstructVtype,
fieldLabel: 'Telephone',
name: 'Telephone',
vtype:'AlphaNum',
id:'test1',
customRegEX:'/^[a-z0-9]/i',
customErrorMsg:'Must be an alphanumeric word',
width:240
});
var txt2 = new Ext.form.TextField({
renderTo:Ext.getBody(),
validator :ConstructVtype,
fieldLabel: 'Telephone',
name: 'Telephone',
vtype:'AlphaNum',
id:'test2',
customRegEX:'/^[a-zA-Z]/i',
customErrorMsg:'Must be an alphabets',
width:240
});
提前致谢
答案 0 :(得分:1)
该函数的参数覆盖全局参数。您可以通过以下方式重构上述代码:
var customRegEX = /^[a-z0-9]/i,
customMsg = 'Must be an alphanumeric word';
function ConstructVtype()
{
Ext.apply(Ext.form.VTypes, {
AlphaNum: function(v,field) {
return customRegEX.test(v);
},
AlphaNumText: customMsg,
AlphaNumMask: customRegEX
});
}
答案 1 :(得分:1)
var customRegEX = new RegExp('^[a-z0-9]',i);
http://www.w3schools.com/jsref/jsref_obj_regexp.asp
[编辑]
当然我忘了把''围绕regexp字符串。
答案 2 :(得分:0)