Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在extjs中完成动态Vtype验证(如下面的代码)_Javascript_Extjs - Fatal编程技术网

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

Javascript 是否可以在extjs中完成动态Vtype验证(如下面的代码),javascript,extjs,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: functio

我是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)行中得到错误(Object不支持此方法)
因为对象中没有名为test的方法(
custExp

是否可以将
custExp
类型转换到保存测试方法的对象

如果上述观点是可能的,请提供该对象类型以及如何进行类型转换? 或 提供如何以不同方式实现此功能

嗨“Alexander Gyoshev”谢谢你的重播

如果我按照u推荐的方式工作,但我需要通过textfield change动态更改regexp值,就像下面的代码一样,这个人怎么做

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  

});

提前感谢

函数的参数将覆盖全局参数。您可以通过以下方式重构上述代码:

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

[已编辑]


当然,我忘了在regexp字符串周围加上“”。

我使用了一些动态函数将值传递给vtype。
你可以在我的主题中看到


希望能有所帮助。

你好,alex thnks等待你的回复…我需要使用此方法解决问题..请检查更新的问题..嘿,Mchl,thnk等待你的回复..你能查看我更新的问题吗。。。如何对窗口或窗体中的所有文本框使用该常用方法。
var customRegEX = new RegExp('^[a-z0-9]',i);