如何使用ko.validation.group函数

时间:2012-10-23 19:24:59

标签: javascript jquery validation knockout.js

我正在尝试使用knockout.validation插件。我创建了一个exampleViewModel:

function exampleViewModel() {
   this.P1 = ko.observable().extend({ required : true });
   this.P2 = ko.observable().extend({ required : true });
   this.P3 = ko.observable().extend({ required : true });
   this.P4 = ko.observable().extend({ required : true });

   this.errors = ko.validation.group(this);
}    

在上面的视图模型中,我为当前对象创建了一个名为errors的验证组。现在,如果任何验证规则在4个中的任何1个属性上失败,则此错误属性包含错误消息。

My question is,如果我想创建一个仅包含3个属性(P1, P2, P3)的验证组,那么我该如何做到这一点?

2 个答案:

答案 0 :(得分:58)

这对我很有用。而不是在this上进行分组,而是创建一个包含要验证的属性的代理对象。

this.errors = ko.validation.group({
    P1: this.P1,
    P2: this.P2,
    P3: this.P3
});

如果您这样做,请考虑使用validatedObservable代替group。您不仅会收到错误,还可以使用isValid属性集体检查所有属性是否有效。

this.validationModel = ko.validatedObservable({
    P1: this.P1,
    P2: this.P2,
    P3: this.P3
});

// is the validationModel valid?
this.validationModel.isValid();
// what are the error messages?
this.validationModel.errors();

答案 1 :(得分:13)

documentation中所述,仅验证特定可观察量的正确方法是:

this.errors = ko.validation.group([this.P1, this.P2, this.P3]);