I am trying to use knockout.validation plugin. I created an 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);
}
In the above view model i created a validation group named errors for the current object. Now if any validation rule fails on any 1 property out of 4 than this errors property contains an error message.
My question is
, if i want to create a validation group of only 3 properties (P1, P2, P3)
out of 4 than how can i do this ?
This worked well for me. Rather than grouping on this
, create a proxy object that holds the properties you want validated.
this.errors = ko.validation.group({
P1: this.P1,
P2: this.P2,
P3: this.P3
});
If you do this, consider using validatedObservable
instead of group
. Not only do you get the errors, but you can collectively check if all the properties are valid using the isValid
property.
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();
As described in the documentation the right way to validate only specific observables is:
this.errors = ko.validation.group([this.P1, this.P2, this.P3]);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With