如果我像这样扩展淘汰观察
var x = ko.observable().
extend({
pattern : {
params: someRegex,
message: "An error"
}
})
.extend({
pattern : {
params: someMoreRegex,
message: "Another error"
}
})
这是挖掘可观察的有效扩展(即多个模式扩展)吗?
第二种模式的正则表达式根本没有被验证。在某些情况下,它会被触发但显示第一个模式错误消息。我最近已将表格1.0.2升级到2.0.3淘汰赛验证,这已经破了但似乎无法理解为什么这不再有效。
答案 0 :(得分:4)
从this(非常古老)Github问题,我得出结论,验证库不支持...
快速解决方法可能是创建匿名自定义规则,借用validator
扩展名中的pattern
方法。
一个例子(没有意义,但展示了如何将两种模式与自己的错误结合起来):
this.name = ko.observable("").extend({
validation: [{
validator: ko.validation.rules['pattern'].validator,
message: "Must be lowercase",
params: /^[a-z]+$/
}, {
validator: ko.validation.rules['pattern'].validator,
message: "Must be uppercase",
params: /^[A-Z]+$/
}
]
});
您可以通过创建返回所需对象的工厂方法或创建一个带有正则表达式数组和错误消息数组的自定义规则来清理此代码。