我正在尝试为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”,并查看了使用默认验证为其他字段引发的内容。
我在这里缺少什么?
答案 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
}
},