1

監視可能な配列の下で複数のカスタム検証ルールを定義しようとしました。 https://github.com/ericmbarnard/Knockout-Validation/wiki/Custom-Validation-Rulesを参照していました。

以下は、検証呼び出しを含む私の observablearray です。

    this.WeeklyData = ko.observableArray([]).extend({
    validation: [
        {
            validator : fminIncrements,
            message: 'use 15 min increments'
        },
        {
            validator: ValidateMinMax,
            message: "Invalid min/max value"
        }
    ]
    });

var ValidateMinMax = function (valueArray) {
var check = true;
ko.utils.arrayFirst(valueArray, function (value) {
    if (parseInt(value.Val(), 10) < 0 || parseInt(value.Val(), 10) > 168) {
        check = false;
        return true;
    }
});
return check;
};

var fminIncrements = function (valueArray) {
var check = true;
ko.utils.arrayFirst(valueArray, function (value) {
    if (parseInt(value.Val(), 10) % 15 !== 0) {
        check = false;
        return true;
    }
});
return check;
};

これを行うと、最初のルールのみが起動します。デバッグしましたが、2番目のものにもヒットしません。何か案が?

助けてくれてありがとう。

4

1 に答える 1

1

ko.utils.arrayFirst() を使用しているためだと思います。代わりに ko.utils.arrayForEach() を使用してすべてのケースをチェックすると、最初に発生したときに返されません。

于 2013-09-08T04:32:26.993 に答える