Validation 淘汰验证问题

Validation 淘汰验证问题,validation,knockout.js,numeric,custom-errors,Validation,Knockout.js,Numeric,Custom Errors,我的淘汰模型验证有以下问题,不确定如何解决。以下是我的模型,首先是验证规则: var Data = function (data) { this.Val = data; } function ViewModel(item) { var parse = JSON.parse(item.d); var self = this; this.Name = ko.observable(parse.Name); this.UserType = ko.observable(parse.UserType);

我的淘汰模型验证有以下问题,不确定如何解决。以下是我的模型,首先是验证规则:

var Data = function (data) {
this.Val = data;
}

function ViewModel(item) {
var parse = JSON.parse(item.d);
var self = this;
this.Name = ko.observable(parse.Name);
this.UserType = ko.observable(parse.UserType);
this.ID = ko.observable(parse.ID).extend({ required: { params: true, message: "ID is    required" }, decimal: { params: 2, message: "Should be decimal"} });
this.Username = ko.observable(parsed.Username).extend({ required: {
        onlyIf: function () {
            return self.UserType() > 1;
        }
    }   
});

this.WeeklyData = ko.observableArray([]);
var records = $.map(parse.WeeklyData, function (data) { return new Data(data) });
this.WeeklyData(records);
this.WeeklyData2 = ko.observableArray([]);
var records = $.map(parse.WeeklyData2, function (data) { return new Data(data) });
this.WeeklyData2(records);
}

ko.extenders.numeric = function (target, precision) {
var result = ko.dependentObservable({
    read: function () {
        return target().toFixed(precision);
    },
    write: target
});

result.raw = target;
return result;
};
以下是我的问题:

1) 由于ID()是可观察的,我想将其限制为两个小数点,因此我创建了验证扩展程序'numeric',但它不起作用。我如何使用它以及如何纠正它有什么问题吗

2) 另外,如果我想把一个可观测的值限制为整数,我该怎么做呢

3) 当我用一个条件(即Username())定义一个规则时,我该如何为它定义一个自定义消息?我可以使用默认规则,但使用条件规则时,它不起作用

4) 我有两个可观察数组WeeklyData1和WeeklyData2,它们都包含Data()对象。我想为这两个设置单独的min/max规则,例如,对于WeeklyData1,min/max-1,7,对于WeeklyData2,min/max-1150。我怎样才能完成它

4) 现在,我的错误消息显示在数据字段的旁边,但我希望所有这些消息都显示在单个验证摘要中,同时在字段上显示“*”。有人叫我用,但我不知道怎么用,有人能举个例子吗

我知道有很多问题,但如果有人能帮我,我很感激


提前感谢

我为您的问题创建了一个小演示,而不是埋头于您的代码中。好了,我们开始吧

1) 由于ID()是可观察的,我想将其限制为两个小数点。。。。2)同样,如果我想把一个可观测值限制为整数

你的第一个和第二个问题非常相似,所以我用一把小提琴把这两个问题都讲了一遍

3) 当我使用条件(即Username())定义规则时,如何定义自定义消息

您可以使用
消息
属性设置自定义消息

4) 我有两个可观察数组WeeklyData1和WeeklyData2,它们都包含Data()对象

我不清楚这个问题是哪一个,这两个数组都包含什么类型的数据,以及要设置什么最小/最大规则(数组长度或其他)。因此,请澄清这一点,然后我将尝试在这方面提供帮助

5) 现在,我的错误消息正好出现在数据字段旁边

这个问题回答了我在你的问题中已经给出的答案(检查更新)


如果有帮助,请告诉我

re:4)两个观测值都包含数值数据。假设WeeklyData1包含21,45,54,19(最小值/最大值应为15/60)。WeeklyData2包含天数,因此最小/最大值应为0/7。这里的min/max不是指数组长度,而是指每个元素的边界。感谢您的回复。它们工作得很好。请回答我的第四个问题。你可以创建一个自定义验证规则来解决你的第四个问题,顺便检查一下,我对你的小提琴进行了如下编辑,但它没有给出任何验证:function VM(){var self=this;self.Age=ko.observable(0).extend({min:{params:10,message:“Error”};self.Salary=ko.observable(0).extend({numeric:2});}基本上,当我为Age指定一个类似于3的值时,我希望抛出错误消息,但它没有。你知道问题是什么吗?“你能给出编辑过的fiddle链接吗?”-我已经开始工作了,很抱歉给您添麻烦。能否在整个ObservalArray上创建自定义验证规则?我的问题是,我想对数组中的每个元素执行最小/最大验证。