我找不到通过vtype传递参数的方法。
所以我做了一些onfly vtype功能。
var vtypeMaker = function(n){
Ext.apply(Ext.form.VTypes, {
myTest : function(v, o){
console.debug(n); // <-- I can pass my custom value
// do something
// ...
return myRegex.test(v);
},
myTestText : 'some message'
});
}
当我想设置vtype时,我应该首先调用此函数。
vtypeMaker(10);
myTextfield.vtype = 'myTest';
它有效但代码太长。
谁有更好的主意?
感谢。
答案 0 :(得分:2)
使用验证程序配置传递自定义验证程序功能,并使用 createDelegate 自定义将发送给它的参数:
var myValidator = function( value, custom ) {
if ( /* value is valid */ ) {
return true;
}
else {
return 'Field value is not valid';
}
};
new Ext.form.TextField({
fieldLabel: 'A text field',
validator: myValidator.createDelegate(null, [10], true);
});
new Ext.form.TextField({
fieldLabel: 'Another text field',
validator: myValidator.createDelegate(null, [14], true);
});
自定义参数在 createDelegate 的第二个参数中设置。将第三个参数设置为 true 将导致将这些自定义参数附加到调用函数的参数(在本例中为字段值)。