I need to make sure each observable is valid and also make sure all the observables are valid together. In my simplified example I have a modelNumber and stockNumber that are each required, but together they must also form a valid partNumber. My attempt gives me this error:
"Uncaught Error: Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters."
What's the problem?
https://jsfiddle.net/yekr2ov2/18/
// enable validation
ko.validation.init();
ko.validation.rules['partNumberValid'] = {
validator: function(partInfo, otherVal) {
return partInfo.modelNumber() + partInfo.stockNumber() == "m1s1";
},
message: 'part number is invalid'
};
ko.validation.registerExtenders();
function VM() {
var self = this;
self.modelNumber = ko.observable().extend({ required: true });
self.stockNumber = ko.observable().extend({ required: true });
self.vinNumber = ko.observable().extend({ required: true });
self.isPartNumberValid = ko.validatedObservable({
modelNumber: self.modelNumber,
stockNumber: self.stockNumber,
vinNumber: self.vinNumber
}).extend({ partNumberValid: true });
self.message = ko.observable();
self.save = function() {
if (self.isPartNumberValid.isValid()) {
self.message("saved");
}
else {
debugger;
//self.isPartNumberValid.errors.showAllMessages();
self.message("not saved");
}
};
}
ko.applyBindings(new VM());
ko.validation.groupwhat you're actually after? - Jeroenko.validation.groupwould tell me if all of the parts are valid according to each of their validations. I'm also want to know if all of the parts together make a valid combination. So, after explaining it that way, I think I have an answer. - Homer