子供の年齢のエントリを検証しようとしています。有効な値は「<1」および 1 ~ 29 です。
このために、以下のようなカスタムバリデータを作成しようとしています。
これらのバリデーターは順番に動作すると想定しているので、それらを動かしてきました。
私がテストしているユースケース:
- ユーザーが 30 を入力すると、「29 未満である必要があります」というエラーがスローされます
- ユーザーが 0 を入力するか何も入力しないと、「年齢を教えてください」というエラーがスローされる
- ユーザーが「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'"
}]
});
};