可以动态Vtype验证在extjs中完成(如下面的代码)

时间:2010-10-28 06:54:20

标签: javascript extjs

我是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

中没有名为test的方法

是否可以将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  

});

提前致谢

3 个答案:

答案 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)

我只做一些函数将值传递给type。 你可以在我的主题中看到。

In ExtJS, Can I pass argument via vtype?

希望有所帮助。