使用敲除的多个 "pattern" 验证扩展器
Multiple "pattern" validation extenders using knockout
如果我像这样扩展可观察到的淘汰赛
var x = ko.observable().
extend({
pattern : {
params: someRegex,
message: "An error"
}
})
.extend({
pattern : {
params: someMoreRegex,
message: "Another error"
}
})
这是否是可观察到的淘汰赛的有效扩展(即多个模式扩展)?
第二个模式的正则表达式根本没有经过验证。在某些情况下,它确实会被触发,但会显示第一个模式错误消息。我最近将表格 1.0.2 升级到 2.0.3 敲除验证,此后已损坏但似乎无法说明为什么它不再有效。
从this(诚然,很老)Github问题,我得出结论,验证库不支持...
一个快速解决方法是创建匿名自定义规则,借用 pattern
扩展中的 validator
方法。
一个示例(没有意义,但展示了如何将两种模式与它们自己的错误结合起来):
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]+$/
}
]
});
您可以通过创建一个 returns 所需对象的工厂方法来稍微清理此代码,或者创建一个采用正则表达式数组和错误消息数组的自定义规则。
如果我像这样扩展可观察到的淘汰赛
var x = ko.observable().
extend({
pattern : {
params: someRegex,
message: "An error"
}
})
.extend({
pattern : {
params: someMoreRegex,
message: "Another error"
}
})
这是否是可观察到的淘汰赛的有效扩展(即多个模式扩展)?
第二个模式的正则表达式根本没有经过验证。在某些情况下,它确实会被触发,但会显示第一个模式错误消息。我最近将表格 1.0.2 升级到 2.0.3 敲除验证,此后已损坏但似乎无法说明为什么它不再有效。
从this(诚然,很老)Github问题,我得出结论,验证库不支持...
一个快速解决方法是创建匿名自定义规则,借用 pattern
扩展中的 validator
方法。
一个示例(没有意义,但展示了如何将两种模式与它们自己的错误结合起来):
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]+$/
}
]
});
您可以通过创建一个 returns 所需对象的工厂方法来稍微清理此代码,或者创建一个采用正则表达式数组和错误消息数组的自定义规则。