meteor autoform自定义验证不反应

时间:2015-08-30 23:58:27

标签: javascript meteor meteor-autoform

我正在尝试为simpleSchema中定义的字段使用自定义验证函数,但错误消息不会在字段上呈现。

num: {
    type: Number,
    label: "Number",
    min: 1,
    decimal: false, // unnecessary as this is default for Number, but for future reference
    autoform: {
        group: "Info",
        defaultValue: function() {
            //@TODO - default to next number for logged in user
            return 5;
        }
    },
    custom: function () {
           Collection.simpleSchema().namedContext("addNumberForm").addInvalidKeys([{name: "num", type: "numNotUnique"}]);
    }
},

我已为其定义了自定义错误消息

SimpleSchema.messages({numNotUnique: "This number has already been entered"});

当我提交表单时,我可以确认自定义函数是否已执行,但该字段的UI中没有任何更改表明该错误。我从SimpleSchema.debug = true;设置获取了上下文名称“addNumberForm”,并查看了使用默认验证为其他字段引发的内容。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

经过多次试验和错误,我已经弄明白了。

只有在使用simpleSchema本身手动验证时才需要simpleSchema命名上下文。 Autoform处理这个问题,自定义函数可以返回一个定义错误的简单字符串。

num: {
    type: Number,
    label: "Number",
    min: 1,
    decimal: false, // unnecessary as this is default for Number, but for future reference
    autoform: {
        group: "Info",
        defaultValue: function() {
            //@TODO - default to next number for logged in user
            return 5;
        }
    },
    custom: function () {
        // some check
        return 'numNotUnique'; // return our error
    }
},