ExtJS将自定义验证移动到外部文件

时间:2012-03-26 11:34:39

标签: javascript validation extjs external

我的一些验证在各种视图中重复出现。我想将它们移到外部文件以方便重用。举个例子,我希望能够使用这样的东西:

Ext.apply(Ext.form.field.VTypes, Ext.custom.validations.Oib);

而不是像这样对VTypes单例应用验证:

Ext.apply(Ext.form.field.VTypes, {
    oib: function(val, field) {
        oib = val.toString();
        if (oib.length != 11) return false;
        var b = parseInt(oib, 10);
        if (isNaN(b)) return false;
        var a = 10;
        for (var i = 0; i < 10; i++) {
        a = a + parseInt(oib.substr(i, 1), 10);
        a = a % 10;
        if (a == 0) a = 10;
        a *= 2;
        a = a % 11;
        }
        var control = 11 - a;
        if (control == 10) control = 0;
        return control == parseInt(oib.substr(10, 1));
    },
    oibText: 'Wrong oib.',
    oibMask: /[\d]/i
});

怎么办呢?

2 个答案:

答案 0 :(得分:0)

如果您将验证添加到单身Ext.form.field.VTypes中,则可以随处访问这些验证。没有?那有什么问题呢?

答案 1 :(得分:0)

我能够做到我需要的大约这个:

将我的文件放入

/ext4/custom

首先定义外部文件的路径。

Ext.Loader.setConfig({
    enabled : true,
    paths : {
    'custom' : '/ext4/custom'
    }
});

需要文件

Ext.require([ 'Ext.*', 'custom.validations.Oib' ]);

最后,将验证应用于singleton:

Ext.apply(Ext.form.field.VTypes, Ext.create('custom.validations.Oib'));