我正在尝试验证孩子年龄的条目。有效值为“<1”和 1-29。
为此,我正在尝试创建如下所示的自定义验证器。
我假设这些验证器按顺序工作,所以我一直在移动它们。
我正在测试的用例:
- 用户输入 30,抛出“需要小于 29”错误
- 用户输入 0 或什么都不输入,抛出 'please say how old' 错误
- 用户输入“6 个月”,抛出错误让他们将值更改为“<1”
- 用户输入 '<1' 没有错误
- 用户输入 1 或 2 或 3 或 4...,没有错误
我无法通过所有这些测试。#5 失败。
var ChildModel = function(cookieAge){
var self = this,
age = cookieAge || "";
self.age = ko.observable(age).extend({
validation: [{
validator: function (val) {
return val !== "" || parseInt(val,10) === 0;
},
message: 'Please say how old this child is.'
},{
validator: function (val, someOtherVal) {
return val=== "<1" || val <= someOtherVal;
},
message: "This child's age must be less than or equal to 29.",
params: 29
},{
validator: function (val) {
var text = val.match(/(\D+)/g);
log(text);
return val.match(/^[0-9].$/) || text && text.length > 0;
},
message: "(contains text) For Children less than 1, please use '<1'"
}]
});
};